<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7457791004653031882</id><updated>2024-02-07T11:34:06.022+09:00</updated><category term="neural network"/><category term="convolution"/><category term="deep learning"/><category term="Dapper"/><category term="Memory Implants"/><category term="confidence interval"/><category term="covariance matrix"/><category term="distributed data center"/><category term="invariance"/><category term="monitoring"/><category term="normal distribution"/><category term="信頼区間"/><category term="分散共分散行列"/><category term="正規分布"/><title type='text'>uno mondo</title><subtitle type='html'>この世界と脳についてぽつりとポストする</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ceromondo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://ceromondo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>goemondo</name><uri>http://www.blogger.com/profile/17435609166287599853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBzzt2y_e87Gq_DyMOP7hLXjtzTK0S-UI-KcbukCTAe68exHWX3dwUwrXC1u6f0jRaJzF8-DbBz8Mxokx38sT-4s94c4VvJ2By6g6075v6WksNTNZsddzCT4p-IYM4Sg/s220/profile.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7457791004653031882.post-6339671986412753746</id><published>2013-05-30T22:00:00.001+09:00</published><updated>2013-05-30T22:00:36.431+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Memory Implants"/><category scheme="http://www.blogger.com/atom/ns#" term="neural network"/><title type='text'>海馬におけるニューロンの非線形活動をモデリングしてみたよ - Memory Implants 関連論文</title><content type='html'>このポストで紹介する論文はこちら。&lt;br /&gt;
&lt;br /&gt;
Ude Lu, Dong Song, Theodore W. Berger: Nonlinear Dynamic Modeling of Synaptically Driven Single Hippocampal Neuron Intracellular Activity. IEEE Trans. Biomed. Engineering 58(5): 1303-1313, 2011.（&lt;a href=&quot;http://bmsr.usc.edu/files/2012/09/IEEE2011.pdf&quot;&gt;Link&lt;/a&gt;）&lt;br /&gt;
&lt;br /&gt;
選択した理由は MIT Technology Review の Memory Implants 記事（&lt;a href=&quot;http://ceromondo.blogspot.jp/2013/05/memory-implants-mit-technology-review.html&quot;&gt;前回ポスト&lt;/a&gt;）の主役である Berger 教授の&lt;a href=&quot;http://www.usc.edu/programs/neuroscience/faculty/profile.php?fid=23#&quot;&gt;経歴ページ&lt;/a&gt;の Publications における最新だったから、というだけ。ざっと読んだところ、過去の Implants 関連の研究経緯もまとめられ、前回のポストで感じた疑問を解消できる内容そう。&lt;br /&gt;
&lt;br /&gt;
ちなみに、いつものように完全な訳ではないです。あくまで紹介。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
おおまかにこの論文のやりたいこと&lt;/h3&gt;
この論文は1つのニューロンの電気的な活動をモデリングすることを目的とする。具体的に、非線形なニューロンの活動をモデル化し、そのモデルにどのような電位スパイク（point process input/output: ポイントプロセスとは1ニューロンにおける離散的な処理であり、入力や出力などが当たる）が入力されても汎用的に対応でき、かつモデルが計算学的に効率的であることを目的とする。&lt;br /&gt;
&lt;br /&gt;
モデリングは実際のニューロンの活動を模倣している。ラットの海馬において、シェファー側枝（Schaffer collateral: 海馬の CA3 から CA1 に投射される軸索）を含む放射状層に樹状突起を伸ばしている CA1 の錐体細胞層の錐体細胞に、ポアソン過程に従うランダムな電気パターンを入力、その際の対応する出力と共に記憶する。なお、このランダムなパターンは CA3 で観測されるスパイクパターンに類似している。&lt;br /&gt;
&lt;br /&gt;
この論文の既存からの発展は postsynaptic potentials (PSPs, シナプス後電位：ニューロン内で活動電位を発生させないかもしれないしはっせいさせるかもしれない電気活動)と活動電位（action potentials：PSPs が閾値以上で軸索へ伝達される電気活動）の両方を計測対象として、モデリングの精度を向上させたことである。PSPs を計測することで、それが閾値以下であっても以上であっても（活動電位が発生するための）閾値の導出が可能となり、ひいてはモデリングの精度を向上できる。&lt;br /&gt;
&lt;br /&gt;
基本的に、既存の研究との差異は3つ。これらは全てモデル精度の向上、換言してニューロンモデルからの確率的な振る舞いの削減のため。&lt;br /&gt;
&lt;br /&gt;
1つ目は、特にアクティブなシナプスのみに着目して、それ一つのみからの入力に応答するモデルとしたこと。&lt;br /&gt;
&lt;br /&gt;
2つ目は、ノイズを無視していること。一般にニューロンの電気的な活動は確率的であり、特に観測できない入力により振る舞いやその他固有のランダムな振る舞いにより、外部から見ると確率的となる。これは実証された有名な事実であり、既存の研究（本論文と異なり、マルチインプット、マルチアウトプット（MIMO）なモデルだけどざっくりとした内部設計）ではこのノイズを考慮している。一方で、本研究では明確な入力1つのみに絞りノイズ（確率的に挙動）をモデルから排除している。&lt;br /&gt;
&lt;br /&gt;
3つ目はパラメータの評価方法に関してである。ニューロンの外部仕様のみに着目した既存の評価方法では、ニューロンの出力に至らない（しきい値以下の）PSPs の影響を見ることができない。この影響を無視することがノイズや確率的な振る舞いとしてしか捉えられないことにつながっていて、結果、既存の研究では最尤法（Maximum-likelihood method）に頼り、モデルが確率的に尤もらしいかを確認せざるをえない。&lt;br /&gt;
&lt;br /&gt;
結果、特定の入力に対する、構築したモデルの出力と実際の出力を比較したところ、PSPs に関しては（正規化済み）平均二乗誤差が14.4%、スパイクの予測誤差は18.8%であった。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
ニューロンモデル&lt;/h3&gt;
既存の研究においても、ニューロンのモデルは確定していない。もしかしたらまったく違ってあまりに簡易化し過ぎているかもしれない。しかし、ニューロンの特性を入れるだけ入れ込めば計算効率が失われ、トレードオフとなる。&lt;br /&gt;
&lt;br /&gt;
ニューロンの電気的な活動は、前シナプスへのカルシウム流入に始まり、シナプス小嚢からの神経伝達物質の放出、後ニューロンでの活動電位発生にかかる処理（複数の樹状突起からの入力の統合や細胞膜電位との統合など）、活動電位のバックプロパゲーションによる膜電位の更新までのシーケンスな活動である。このような複雑な活動を、入出力特性という限られた情報だけを用いて、最小限の仮定をもってモデルを構築してみてる。&lt;br /&gt;
&lt;br /&gt;
ニューロンはフィードフォワードカーネルと、閾値判定器と、フィードバックカーネルの3つの分割された機能からモデル化される。&lt;br /&gt;
&lt;br /&gt;
フィードフォワードカーネルは3次の関数であり、前シナプスの電位の転送と複数の樹状突起から転送される電位の統合、細胞体での統合、そして最終的にPSPsを生成する非線形処理を担当する。&lt;br /&gt;
&lt;br /&gt;
閾値判定器は PSPs が活動電位たらしめるかを固定な閾値でもって判定する。PSPsが閾値より高ければ、テンプレートで固定なインパルスが活動電位として生成され、膜電位上書きされる（これは加算でなく上書き、論理和）。&lt;br /&gt;
&lt;br /&gt;
フィードバックカーネルは PSPs から活動電位を生成する過程へ与えられる、膜電位の影響を表現するために、生成した活動電位から膜電位変分へと変換する関数である。具体的に、活動電位発生により上昇する膜電位は次の入力による活動電位の生成に影響を与える（PSPsの生成には影響を与えないのかな？参考文献には記載されてるのかな）。その影響力である膜電位の更新にフィードバックカーネルは利用される。&lt;br /&gt;
&lt;br /&gt;
ニューロンモデルの図、数式は下記のようになる。変数は図の通り。但し M&lt;sub&gt;k&lt;/sub&gt; は（後述するたたみ込み演算の）ウィンドウサイズを示し、 w は膜電位を示し、膜電位 w が閾値 θ &quot;以上&quot; の時にニューロンの出力に &quot;テンプレートな（固定な）&quot; 活動電位 yh が加算される。そのため、膜電位 w が閾値 θ 以上の時のみ活動電位はゼロでなく固定の電位となる。では、フィードバックカーネルは膜電位 w が閾値 θ 以上の時のみに起動されるのか。これは異なる（詳細は後述するがたたみ込み演算により過去の活動も遅延して反映されるモデル）。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDQkus04-kBzP3Cf53Eikur5IhXUJwwFMtoWUMeu3UelKjaih0suPaHRJs7LdmbvMfRNMl5AumjJ_LY8KQOlyEDGteJQNz2Ay8iZNhyWY9RWCRg17Cdu3qhxw9TxFEXxK13I-7w9XINDd-/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-05-21+23.39.31.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;135&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDQkus04-kBzP3Cf53Eikur5IhXUJwwFMtoWUMeu3UelKjaih0suPaHRJs7LdmbvMfRNMl5AumjJ_LY8KQOlyEDGteJQNz2Ay8iZNhyWY9RWCRg17Cdu3qhxw9TxFEXxK13I-7w9XINDd-/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-05-21+23.39.31.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;ニューロンモデル。x は擬似入力刺激、K1〜K3はフィードフォワードカーネル、u はPSPs、w は刺激入力後の膜電位、θは閾値、yh は活動電位（ただしテンプレートで固定）、H はフィードバックカーネル、a は膜電位更新値、y は出力電位となる。なのでフィードフォワードカーネルで入力を変換し、活動電位をフィードバックカーネルで変換した値と論理和し膜電位を生成。更新膜電位を閾値判定して固定のテンプレ電位を生成し、膜電位に加算、出力とするモデル。&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?w = u \left( K, x \right) + a \left( H,  yh \right)&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?y = \left\{\begin{aligned}w + action\ potentials,\ w \geq\ \theta \\ w, \ w &amp;lt; \theta \end{aligned}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
さて、詳細に、フィードフォワードカーネルは3次の Volterra モデルにより下記のように表現される。k0 は0次のカーネルで、入力がない時のデフォルトの出力、つまり膜電位を表現している。k1〜k3は1〜3次のカーネル。1次以上に関して、時刻 τ&lt;sub&gt;i&lt;/sub&gt; の影響度 k&lt;sub&gt;i&lt;/sub&gt;(τ&lt;sub&gt;i&lt;/sub&gt;, ...) を入力 x にかけたたたみ込み積分となっていて、時刻 t までの入力の累積として PSPs が生成される。高次としているのは、連続する複数のインパルスのを考慮するためと、非線形性を表現するため。つまり、1次のみであれば 0 ≤ τ ≤ M&lt;sub&gt;k&lt;/sub&gt; の間に発生したインパルスの影響しか見れないけど、2次以上であれば複数の τ（影響期間）を考慮できる。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\begin{array}{ccl} u(t) &amp;amp; = &amp;amp; \displaystyle{ k_{0} + \sum_{\tau_{1}=0}^{M_{k}} k_{1} (\tau_{1}) x(t - \tau_{1}) } \\  &amp;amp; + &amp;amp; \displaystyle{ \sum_{\tau_{1}=0}^{M_{k}} \sum_{\tau_{2}=0}^{M_{k}} k_{2} (\tau_{1}, \tau_{2}) x(t - \tau_{1}) x(t - \tau_{2}) } \\  &amp;amp; + &amp;amp; \displaystyle{ \sum_{\tau_{1}=0}^{M_{k}} \sum_{\tau_{2}=0}^{M_{k}} \sum_{\tau_{3}=0}^{M_{k}} k_{3} (\tau_{1}, \tau_{2}, \tau_{3}) x(t - \tau_{1}) x(t - \tau_{2}) x(t - \tau_{3}) } \end{array}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
膜電位更新値 a もやはり活動電位生成後の影響を考慮して1次の Volterra モデルでたたみ込み演算として表現される。なおたたみ込みのウィンドウサイズは M&lt;sub&gt;h&lt;/sub&gt; で活動電位 yh のテンプレ固定値は1と設定される。&lt;br /&gt;
&lt;br /&gt;
（この値はニューロンの活動に左右されるはずなので、ここで1とするということは、入力 x の活動時の振幅も1であると思われる。これはつまり、ラットの海馬の観察で得ているのは活動のタイミングだけであり活動の大きさは対象としていない。具体的に、入力インパルスの入力タイミングやその時の周波数に対して出力するかどうかを見ているだけかと）。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?a(t) = \sum_{\tau=0}^{M_{h}} h (\tau) yh(t - \tau)&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?yh = \left\{\begin{aligned}1,\ w \geq\ \theta \\ 0, \ w &amp;lt; \theta \end{aligned}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Volterra モデルにおけるカーネルをどうやって決定するか。この論文ではラゲール関数（Laguerre bias function）によって Volterra カーネルを展開し、関数を係数化（離散化、係数行列化）している。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\begin{array}{ccl} u(t) &amp;amp; = &amp;amp; \displaystyle{ c_{k0} + \sum_{j=1}^{L} c_{k_{1}} (j) v_{j}^{k}(t) }\\  &amp;amp; + &amp;amp; \displaystyle{ \sum_{j_{1}=1}^{L} \sum_{j_{2}=1}^{j_{1}} c_{k2} (j_{1}, j_{2}) v_{j_{1}}^{k}(t) v_{j_{2}}^{k}(t) } \\  &amp;amp; + &amp;amp; \displaystyle{ \sum_{j_{1}=1}^{L} \sum_{j_{2}=1}^{j_{1}} \sum_{j_{3}=1}^{j_{2}} c_{k3} (j_{1}, j_{2}, j_{3}) v_{j_{1}}^{k}(t) v_{j_{2}}^{k}(t) v_{j_{3}}^{k}(t) } \end{array}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?v_{j}^{k}(t) = \sum_{\tau = 0}^{M_{k}} b_{j} (\tau) x(t - \tau)&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?a(t) = \displaystyle{ \sum_{j=1}^{L} c_{h} (j) v_{j}^{h}(t) }&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?v_{j}^{h}(t) = \sum_{\tau = 0}^{M_{k}} b_{j} (\tau) yh(t - \tau)&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?b_{j} (\tau) = \left\{\begin{aligned}(-1)^{\tau} \alpha^{(j - \tau)/2} (1 - \alpha)^{1/2} \times \sum_{k=0}^{\tau} (-1)^{k} \left( \textit{A} \right) \left( \textit{B} \right) \alpha^{\tau - k} (1 - \alpha)^{k},\ (0 \le \tau &amp;lt; j) \\ (-1)^{j} \alpha^{(\tau - j)/2} (1 - \alpha)^{1/2} \times \sum_{k=0}^{j} (-1)^{k} \left( \textit{A} \right) \left( \textit{B} \right) \alpha^{j - k} (1 - \alpha)^{k},\ (j \le \tau \le M) \end{aligned}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\textit{A} = \left( \begin{array}{c} \tau \\ k \end{array} \right),\  \textit{B} = \left( \begin{array}{c} j \\ k \end{array} \right)&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
（ラゲール多項式、よくわからん。これを追うのはちと大変そうなので、こう展開するものだとして先に進める。式はなんとなく、畳み込む関数であるカーネル関数を、畳み込む関数成分である b&lt;sub&gt;j&lt;/sub&gt; と、たたみ込み演算結果の重み成分 c&lt;sub&gt;k&lt;/sub&gt; に分解。あとは複数の b&lt;sub&gt;j&lt;/sub&gt; によるたたみ込み演算結果に重みをかけて、それらを加算することで複数の成分でカーネル関数を表現しようという多項化。こう見ると、一般的なカーネル関数の解法と同じで &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{f&#39;(x) =  \sum_{i=1}^{n} \alpha_{i} K(x, x_{i})}&quot; /&gt; で言うところの α が c&lt;sub&gt;k&lt;/sub&gt; で K(x, x&lt;sub&gt;i&lt;/sub&gt;) が b&lt;sub&gt;j&lt;/sub&gt; となる。&lt;br /&gt;
&lt;br /&gt;
なお b&lt;sub&gt;j&lt;/sub&gt; はプラスとマイナスで振動しながら（ j やτによって異なるが）ピークな振幅となる振動を無視すれば二項分布に似た波形。）&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;
ニューロンモデルの評価&lt;/h3&gt;
モデルの評価に関して、PSPs のモデルの出力と実際の値の誤差をNMSE（Normalized mean square error: 正規化された平均二乗誤差）で見る。正規化してるのは、この論文の学習対象はタイミングであり値の振幅値ではないから。NMSE は下式の通りMSE を実測値で正規化している（実測値は &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\tilde{y}(t)}&quot; /&gt;, モデル予測値が y(t), T はサンプリング最大長）。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?NMSE = \frac{ \sum_{t=1}^{T} \left( y(t) - \tilde{y}(t) \right)^{2} }{\sum_{t=1}^{T}\tilde{y}(t)}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
また、ニューロン出力の誤差は SPER (spike prediction error rate）で見る。SPER は全入力刺激数に対する誤った出力数（偽陽性と偽陰性の数）であり、詳細に、ある刺激が入力された時に実際には活動電位が出力されないのに誤って出力されてしまうパターン数（false positive）と、逆にある刺激が入力された時に実際には活動電位が出力されるのに誤って出力されないパターン数（false negative）の和を、全入力刺激で割ったもの。&lt;br /&gt;
&lt;br /&gt;
なので、実際の出力にモデルの出力がマッチしているかどうかを誤差とするのでなく、刺激入力に対して適切な出力がされるかどうかを誤差としている。これは、刺激の入力がない時の情報は don&#39;t care なのか、それとも刺激がない時にはエラーが発生しないという前提がある。&lt;br /&gt;
&lt;br /&gt;
（どっちとも取れそうな。人為的なミスか何かで海馬スライスへの電極刺激が近傍のニューロンに行けば、刺激入力がないのにニューロンが活動することになる。今回の評価ではそれは無視すべきだ。でもそこまで考慮するなら、その活動で発生する膜電位上昇まで考慮しないといけなくなる。うーん、これはないか。後者であれば、細胞の暴走みたいなこと、外部入力がないのに活動電位が発生するなんてことはないってことだけど、それって生理学的に実証されてるのかな。）&lt;br /&gt;
&lt;br /&gt;
モデルの最適化はラゲール関数を使って展開したモデルのパラメータの学習により実行される。学習対象のパラメータは α, L, c&lt;sub&gt;k&lt;/sub&gt;, c&lt;sub&gt;h&lt;/sub&gt;, θ である。&lt;br /&gt;
&lt;br /&gt;
α は 0 &amp;lt; α &amp;lt; 1 であり、ラゲール関数がどのくらいの度合いで指数的に漸近に減少するか、を決定する率を表す。ここでは 0.5 から 1 の間で 0.01 刻みに、準ニュートン法で近似解を求めている（準ニュートン法は最小二乗法に似てて、最小二乗法では出発点から一次微分だけ加算するが、ニュートン法では出発点から接線と探索変数軸（f(x) なら x ）の交点を次の検証点とする。準ニュートン法は、ニュートン法で必要となる二階微分を一階微分で近似する方法）。実際には 実測値とモデル出力間の NMSE がゼロとなる α を探す。&lt;br /&gt;
&lt;br /&gt;
（α のマップは下図の通りなんだけど、誤差が12％もあるって妥当なモデルなのか？）&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKAkWCuUMXeOQYTrWMIoxBEcxRJrVEox_cQNJgib03jrjNqwjJ6B-hMRdpbtGLWclGHq0I9AhLTQWyKVsNBjxdB9OhfRAZtYJYL90NP92TQ68hAWQ8McS8c5UJqqpjHmJ20xNj9fCXHoPj/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-05-27+9.07.59.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;232&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKAkWCuUMXeOQYTrWMIoxBEcxRJrVEox_cQNJgib03jrjNqwjJ6B-hMRdpbtGLWclGHq0I9AhLTQWyKVsNBjxdB9OhfRAZtYJYL90NP92TQ68hAWQ8McS8c5UJqqpjHmJ20xNj9fCXHoPj/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-05-27+9.07.59.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;α&lt;sub&gt;k&lt;/sub&gt; と α&lt;sub&gt;h&lt;/sub&gt; によるNMSEの等高線。α&lt;sub&gt;k&lt;/sub&gt; の方が支配的（変化しやすい）であり、最適解はα&lt;sub&gt;k&lt;/sub&gt; が0.971、α&lt;sub&gt;h&lt;/sub&gt; が0.91あたりのところ&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
次にラゲールバイアス関数の項数を示していて、サンプル内（in-sample）学習では項数の増加と共に NMSE は単調に減少するものの、サンプル外（out-of-sample）学習では NMSE は L＝3 で最小となり、項数増加と共に NMSE は増大する。この結果はサンプル内学習のオーバーフィッティング（過学習）を示しており、最適な項数は3である。&lt;br /&gt;
&lt;br /&gt;
ラゲージ展開の際に登場する係数 c&lt;sub&gt;k&lt;/sub&gt;, c&lt;sub&gt;h&lt;/sub&gt; は入力のたたみ込み演算結果である v の集合行列の擬似逆行列と実測の出力データを使って求めて、その後実測データとの誤差を最小二乗法により最適解を求める。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\left[ \begin{array}{c} c_{k0} \\ c_{k}(1) \\ \vdots \\ c_{k}(p) \\ c_{h}(1) \\ \vdots \\ c_{h}(q)  \end{array} \right]_{(1+p+q) \times 1} = \left[ \begin{array}{c} {({}_{t}VV)^{-1}} {}_{t}V \end{array} \right]_{(1+p+q) \times T} \left[ \begin{array}{c} \tilde{y}(1) \\ \tilde{y}(2) \\ \vdots \\ \tilde{y}(T) \end{array} \right]_{T \times 1}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
ここで、V は T × (1+p+q) のサイズで T は入出力パターン数、1+p はフィードフォワードカーネルの演算数、q はフィードバックカーネルの演算数を示している。要は一つのカーネルに関するたたみ込み演算結果を時系列データとして一次のベクトルとする [V&lt;sub&gt;j&lt;/sub&gt;&lt;sup&gt;k&lt;/sup&gt;]&lt;sub&gt;T×1&lt;/sub&gt; を全てのカーネル演算分連結したベクトルが V。あと右下の添字の t は転置行列を示す。&lt;br /&gt;
&lt;br /&gt;
（さて、この係数行列 {c&lt;sub&gt;k&lt;/sub&gt;} を畳み込み演算部の v&lt;sub&gt;j&lt;/sub&gt;&lt;sup&gt;k&lt;/sup&gt; の逆行列と観測された出力の内積とすることは妥当なのか。V&lt;sup&gt;-1&lt;/sup&gt;Y&lt;sup&gt;~&lt;/sup&gt;V という形からフィルター操作かとかいろいろと勘ぐりしたけど、それはまったくの見当違いで。((1+p+q) x T) x (T x 1) x (T x (1+p+q)) なんて計算できないし。結局のところ、y&lt;sup&gt;~&lt;/sup&gt;/v というモデル出力に対する正しい値の比をモデル出力値にかけて出力値を調整しているだけ。ということで妥当な手段かと。）&lt;br /&gt;
&lt;br /&gt;
ラゲール多項式により展開されたフィードフォワード・フィードバック関数のカーネルは Σ x(t - τ) をくくり出すことにより、下記のように設定できる。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?k_{1} (\tau) = \sum_{j_{1}=1}^{L} c_{k_{1}} (j_{1}) b_{j_{1}} (\tau)&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?k_{2} (\tau_{1}, \tau_{2}) = \sum_{j_{1}=1}^{L} \sum_{j_{2}=1}^{j_{1}} \frac{c_{k_{2}} (j_{1}, j_{2})} {2} \times \left( b_{j_{1}} (\tau_{1})b_{j_{2}} (\tau_{2}) + b_{j_{2}} (\tau_{1})b_{j_{1}} (\tau_{2}) \right)&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?k_{3} (\tau_{1}, \tau_{2}, \tau_{3}) = \sum_{j_{1}=1}^{L} \sum_{j_{2}=1}^{j_{1}} \sum_{j_{3}=1}^{j_{2}} \frac{c_{k_{3}} (j_{1}, j_{2}, j_{3})} {6} \times \left( \begin{array}{c} b_{j_{1}} (\tau_{1})b_{j_{2}} (\tau_{2})b_{j_{3}} (\tau_{3}) \\ + b_{j_{1}} (\tau_{1})b_{j_{3}} (\tau_{2})b_{j_{2}} (\tau_{3}) \\ + b_{j_{2}} (\tau_{1})b_{j_{1}} (\tau_{2})b_{j_{3}} (\tau_{3}) \\ + b_{j_{2}} (\tau_{1})b_{j_{3}} (\tau_{2})b_{j_{1}} (\tau_{3}) \\ + b_{j_{3}} (\tau_{1})b_{j_{1}} (\tau_{2})b_{j_{2}} (\tau_{3}) \\ + b_{j_{3}} (\tau_{1})b_{j_{2}} (\tau_{2})b_{j_{1}} (\tau_{3}) \end{array} \right)&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?h (\tau) = \sum_{j=1}^{L} c_{h} (j) b_{j} (\tau)&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
しきい値 θ は0〜20mV の範囲で 0.01mV単位にニューロン動作を観測し、最も少ない SPER であった値とした。具体的には、ROC曲線（Receiver Operating Characteristic: false positive をx軸、true positive をy軸として描かれる曲線基本的には右下の (1,0) を中心とする半円のような図形となる）を描き、最も良い値である左上の座標 (0, 1) から最も L-1 距離（マンハッタン距離：ブロックに沿った距離）が小さな値をしきい値としている。結果、だいたい8mVをしきい値としている。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb0gkmRhoCEQZAu2rYGAzuCaOs0iYmcOjB8UwX3_G3IUiNlXudJTw7NyEFX0m-G4W7UgJsq7hVfZTnSuMgsoYC9iE3mKu4znylgYyOBdyAgFF1ArIEtmjO-6E8mMUFKldwB3DTuNPyQ1LK/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-05-28+22.44.56.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb0gkmRhoCEQZAu2rYGAzuCaOs0iYmcOjB8UwX3_G3IUiNlXudJTw7NyEFX0m-G4W7UgJsq7hVfZTnSuMgsoYC9iE3mKu4znylgYyOBdyAgFF1ArIEtmjO-6E8mMUFKldwB3DTuNPyQ1LK/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-05-28+22.44.56.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;ニューロンモデル出力値のROC曲線&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;
ニューロンモデルの評価&lt;/h3&gt;
詳細な記述はめんどいので省略するが、フィードフォワード・フィードバックカーネルの高次の度合いによる効果を確認するために、1次、2次（＋1次）、3次（＋1次、2次）それぞれのレスポンスを見ている。&lt;br /&gt;
&lt;br /&gt;
Volterra カーネルの演算により得られるレスポンスファンクション値（response functions） r は次のようになるらしい。入力が1つのインパルスである場合の反応値 r&lt;sub&gt;1&lt;/sub&gt; はそれぞれのカーネルで演算された結果、r&lt;sub&gt;1&lt;/sub&gt;(τ) = k&lt;sub&gt;1&lt;/sub&gt;(τ) （カーネル K1 の結果）、r&lt;sub&gt;1&lt;/sub&gt;(τ) = k&lt;sub&gt;1&lt;/sub&gt;(τ) + k&lt;sub&gt;2&lt;/sub&gt;(τ,τ) （カーネル K2 の結果）、r&lt;sub&gt;1&lt;/sub&gt;(τ) = k&lt;sub&gt;1&lt;/sub&gt;(τ) + k&lt;sub&gt;2&lt;/sub&gt;(τ,τ) + k&lt;sub&gt;3&lt;/sub&gt;(τ,τ,τ) （カーネル K3 の結果）。&lt;br /&gt;
&lt;br /&gt;
入力が2つのインパルスである場合の反応値 r&lt;sub&gt;2&lt;/sub&gt; はそれぞれのカーネルで演算された結果、r&lt;sub&gt;2&lt;/sub&gt;(τ&lt;sub&gt;1&lt;/sub&gt;, τ&lt;sub&gt;2&lt;/sub&gt;) = k&lt;sub&gt;2&lt;/sub&gt;(τ&lt;sub&gt;1&lt;/sub&gt;, τ&lt;sub&gt;2&lt;/sub&gt;) + k&lt;sub&gt;2&lt;/sub&gt;(τ&lt;sub&gt;2&lt;/sub&gt;, τ&lt;sub&gt;1&lt;/sub&gt;) = 2k&lt;sub&gt;2&lt;/sub&gt;(τ&lt;sub&gt;1&lt;/sub&gt;, τ&lt;sub&gt;2&lt;/sub&gt;) （カーネル K2 の結果、カーネル演算は対称性を持つ模様）、r&lt;sub&gt;2&lt;/sub&gt;(τ&lt;sub&gt;1&lt;/sub&gt;, τ&lt;sub&gt;2&lt;/sub&gt;) = 2k&lt;sub&gt;2&lt;/sub&gt;(τ&lt;sub&gt;1&lt;/sub&gt;, τ&lt;sub&gt;2&lt;/sub&gt;) + 3k&lt;sub&gt;3&lt;/sub&gt;(τ&lt;sub&gt;1&lt;/sub&gt;, τ&lt;sub&gt;1&lt;/sub&gt;, τ&lt;sub&gt;2&lt;/sub&gt;) + 3k&lt;sub&gt;2&lt;/sub&gt;(τ&lt;sub&gt;1&lt;/sub&gt;, τ&lt;sub&gt;2&lt;/sub&gt;, τ&lt;sub&gt;2&lt;/sub&gt;)（カーネル K3 の結果、k&lt;sub&gt;3&lt;/sub&gt;に入力するパターンは2パターンで、それぞれ3パターン）（カーネル K1 は計算できないので無視される）。&lt;br /&gt;
&lt;br /&gt;
入力が3つのインパルスである場合の反応値 r&lt;sub&gt;3&lt;/sub&gt; はカーネル k&lt;sub&gt;3&lt;/sub&gt; のみ演算され、r&lt;sub&gt;3&lt;/sub&gt;(τ&lt;sub&gt;1&lt;/sub&gt;, τ&lt;sub&gt;2&lt;/sub&gt;, τ&lt;sub&gt;3&lt;/sub&gt;) = 6k&lt;sub&gt;3&lt;/sub&gt;(τ&lt;sub&gt;1&lt;/sub&gt;, τ&lt;sub&gt;2&lt;/sub&gt;, τ&lt;sub&gt;3&lt;/sub&gt;)（カーネル K3 の結果、入力パターンは6パターン）。&lt;br /&gt;
&lt;br /&gt;
レスポンスファンクションは確かに高次になるほど NMSE が低下していることが分かった。これは PSPs もニューロン出力も同様である。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHpftIgA9UpP7nLt5D-Hyy7q9RsKjEaBth5xabrhduLAMd2kPCBNVYFXZ7TgQRXIM1UDi_9q-mob0iaGzkXhBQuntFRaYXHm5ZQOZZHTTO30CqYLrCfdyFy7yk9byHBdfBYGCSx-nvnbDy/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-05-30+0.09.06.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;281&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHpftIgA9UpP7nLt5D-Hyy7q9RsKjEaBth5xabrhduLAMd2kPCBNVYFXZ7TgQRXIM1UDi_9q-mob0iaGzkXhBQuntFRaYXHm5ZQOZZHTTO30CqYLrCfdyFy7yk9byHBdfBYGCSx-nvnbDy/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-05-30+0.09.06.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;2次のレスポンスファンクション結果。(a) は1次のレスポンス（＝1次のカーネル関数）で発火時間はτ=0の時。二項分布のような波形の b&lt;sub&gt;j&lt;/sub&gt; のお陰で遅延モデルを実現している。(b) は2次のレスポンス（＝2次のカーネル関数）であり、図の通り2つ同時のインパルス入力をケアできる&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
3次の検証では、NMSE は14.4%、SPER は18.8%であった。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
課題、フューチャーワーク&lt;/h3&gt;
ニューロンの出力のためのしきい値はダイナミックに変化することが知られており、本論文のスタティックなモデルの拡張が求められる。&lt;br /&gt;
&lt;br /&gt;
今回はあえて外したマルチインプット、マルチアウトプットへの対応も ToDo リスト入り。&lt;br /&gt;
&lt;br /&gt;
さらに、高頻度な入力は入出力特性を更新する。この可塑性（長期的な期間での振る舞いとその更新）はニューラルネットワークの学習において重要なので、ちゃんとそれへも対応したいとのこと。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
計測環境に関して&lt;/h3&gt;
計測では、海馬のCA1のshaffer collaterals (SC) を含む放射状層に樹状突起を伸ばしている錐体細胞層の錐体細胞に活動電位を模倣するインパルス信号を送って、その反応出力を観測する。この方法は細胞に直接電位を注入するよりも自然な振る舞いであり、採用している。&lt;br /&gt;
&lt;br /&gt;
計測対象の海馬のスライスは2週間目のオスのSDラット（Sprague–Dawley ラットという医療実験で良く使われてそうな可愛いラット）にハロタン吸入麻酔（Harothane inharant anesthentic）をかけて、ビブラトーム（vibratome: スライサーな機械）で凍結スクロース置換（iced sucrose solution）という方法で取り出したもの。厚さは 400μm 。&lt;br /&gt;
&lt;br /&gt;
凍結スクロース置換の構成はスクロース206, KCI 2.8, NaH2 PO4 1.25, NaHCO3 26, グルコース 10, MgSO4 2, pH 7.5, 290 ミリオスモル のアスコルビン酸 2。&lt;br /&gt;
&lt;br /&gt;
25度に保たれた oxygenated bath に漬ける前に CA3 と CA1 間の接続を切断し、パッチクランプによる記録時には海馬のスライスはその oxygenated bath にかん流させておく。&lt;br /&gt;
&lt;br /&gt;
電極は研究室お手製でホルムバール（formvar）膜のニクロム線で CA1 の放線状層にぶっ刺して計測する。電極に装着するマイクロピペットは4Mオームの抵抗を持ち、ピペットプラー（pipette puller: よくわからんが装置）を使って薄い1ガロン程のホウケイ酸塩のガラス管（bolocilicate glass tubing）で埋めている。それを CA1 の錐体細胞の細胞膜に接続する。&lt;br /&gt;
&lt;br /&gt;
ニューロンへの入力電位はプロクラマブルな stimulator で平均2Hz、インパルス電位発生の周期で 10 から 4500ms で、ポアソン過程に従うランダムなインパルスとなるように生成される。2Hz なのはラットの CA3 の錐体細胞の発火特性がそうだから。また、入力電位の振幅は活動電位のだいたい50%に調整されている（理由は不明）。&lt;br /&gt;
&lt;br /&gt;
活動電位は HEKAEPC9/2 アンプで10kHzのサンプリングレートで記録している。&lt;br /&gt;
&lt;br /&gt;
モデル構築は、13の異なるラットから15の細胞に対して200秒間入力し400の刺激を与える施行を98回行った結果を用いている。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
海馬に関して、知ってる人は知ってること&lt;/h3&gt;
ラットの海馬の CA1 の錐体細胞の樹状突起は先端樹状突起（apical dendrite）と基底樹状突起（basal dendrite）の2本に枝分かれしていて、長い先端樹状突起は錐体細胞の頂点側から放線状層（stratum radiatum）や網状分子層（stratum lacunosum-moleculare）へ伸び、短い基底樹状突起は錐体細胞の頂点でない方から上昇層（stratum orients）へ伸びている。錐体細胞層から海馬裂（hippocampal fissure）までの距離はだいたい600μm。錐体細胞層から白板（alveus）への距離は300μm。CA1の端から端までは1mm。&lt;br /&gt;
&lt;br /&gt;
CA1の錐体細胞の樹状突起は約30,000のスパイン（spine: 刺）で覆われ、興奮性入力（excitatory input）が CA3 から SC を経由して CA1 の錐体細胞に届く。特に CA3 の錐体細胞からの入力は放線状層の先端樹状突起に作られるシナプスや、上昇層の基底樹状突起のシナプスから入力される。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
感想&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;ニューロンのモデル化において、何が必須なパラメータで何がオプションなのか、そのあたりを明確にしたい。この論文では入出力関係だけでなくPSPsが重要とし、それ以上はコンピューティング的に非効率と判断してモデル化したわけだけど、それは妥当かがわからない&lt;/li&gt;
&lt;li&gt;あと、できればラゲール関数のパラメータ L だけでなく、どれだけ高次にすべきかという評価もしてもらいたいなと。どこまで高次にするとオーバーフィッティングなのかな&lt;/li&gt;
&lt;li&gt;この論文でインプラント関連の論文はしばらくいいかなと思ったのだけど、ノイズ項の設計や、ニューロンのダイナミックしきい値の詳細、可塑性を実現するニューロンモデルあたりは気になる&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
過去の研究の参考文献&lt;/h3&gt;
この論文で提示されてる過去研究。今後の文献調査の参考に掲載させてもらう。&lt;br /&gt;
&lt;br /&gt;
ニューロンの数学モデルはこちら。&lt;br /&gt;
&lt;br /&gt;
W. Gerstner and W. Kistler, Spiking Neuron Models: Single Neurons, Populations, Plasticity. Cambridge, CA, U.K.: Cambridge Univ. Press, 2002.&lt;br /&gt;
&lt;br /&gt;
C. Koch, Biophysics of Computation: Information Processing in Single Neurons. London, U.K.: Oxford Univ. Press, 2004.&lt;br /&gt;
&lt;br /&gt;
C. Koch and I. Segev, “The role of single neurons in information processing,” Nat. Neurosci., vol. 3, pp. 1171–1177, 2000.&lt;br /&gt;
&lt;br /&gt;
数学モデルでも特に著名なものはこちら。&lt;br /&gt;
&lt;br /&gt;
A. V. Herz, T. Gollisch, C. K. Machens, and D. Jaeger, “Modeling singleneuron dynamics and computations: A balance of detail and abstraction,”Science, vol. 314, pp. 80–85, 2006.&lt;br /&gt;
&lt;br /&gt;
W. Gerstner and R. Naud, “Neuroscience. How good are neuron models?,”Science, vol. 326, pp. 379–380, 2009.&lt;br /&gt;
&lt;br /&gt;
E. M. Izhikevich, “Which model to use for cortical spiking neurons?,”IEEE Trans. Neural Netw., vol. 15, no. 5, pp. 1063–1070, Sep. 2004.&lt;br /&gt;
&lt;br /&gt;
生物学、神経学をアプローチとするモデルの構築はこちら。&lt;br /&gt;
&lt;br /&gt;
N. P. Poolos, M. Migliore, and D. Johnston, “Pharmacological upregulation of h-channels reduces the excitability of pyramidal neuron dendrites,”Nat. Neurosci., vol. 5, pp. 767–774, 2002.&lt;br /&gt;
&lt;br /&gt;
A. L. Hodgkin and A. F. Huxley, “A quantitative description of membrane current and its application to conduction and excitation in nerve,” J.Physiol., vol. 117, pp. 500–544, 1952.&lt;br /&gt;
&lt;br /&gt;
P. Poirazi, T. Brannon, and B. W. Mel, “Arithmetic of subthreshold synaptic summation in a model CA1 pyramidal cell,” Neuron, vol. 37, pp. 977–987, 2003.&lt;br /&gt;
&lt;br /&gt;
J. M. Bouteiller, M. Baudry, S. L. Allam, R. J. Greget, S. Bischoff, and T.W. Berger, “Modeling glutamatergic synapses: Insights into mechanisms regulating synaptic efﬁcacy,” J. Integr. Neurosci., vol. 7, pp. 185–197, 2008.&lt;br /&gt;
&lt;br /&gt;
D. Song, Z. Wang, and T. W. Berger, “Contribution of T-type VDCC to TEA-induced long-term synaptic modiﬁcation in hippocampal CA1 and dentate gyrus,&quot; Hippocampus, vol. 12, pp. 689–697, 2002.&lt;br /&gt;
&lt;br /&gt;
N. T. Carnevale and M. L. Hines, The NEURON Book. Cambridge, U.K.: Cambridge Univ. Press, 2006.&lt;br /&gt;
&lt;br /&gt;
W. R. Holmes and W. Rall, “Estimating the electrotonic structure of neurons with compartmental models,” J. Neurophysiol., vol. 68, pp. 1438–1452, 1992.&lt;br /&gt;
&lt;br /&gt;
さらに、生物学、神経学をアプローチとし、具体的にコンパートメントモデル、その中でも入出力の量的な関係に着目したニューロン特性のモデル化はこちら。&lt;br /&gt;
&lt;br /&gt;
R. Kobayashi, Y. Tsubo, and S. Shinomoto, “Made-to-order spiking neuron model equipped with a multi-timescale adaptive threshold,” Frontiers in Comput. Neurosci., vol. 3, article 9, 2009.&lt;br /&gt;
&lt;br /&gt;
L. Paninski, J. W. Pillow, and E. P. Simoncelli, “Maximum likelihood estimation of a stochastic integrate-and-ﬁre neural encoding model,” Neural Comput., vol. 16, pp. 2533–2561, 2004.&lt;br /&gt;
&lt;br /&gt;
L. Paninski, J. Pillow, and E. Simoncelli, “Comparing integrate-and-ﬁre models estimated using intracellular and extracellular data,” Neurocomputing, vol. 65–66, pp. 379–385, 2005.&lt;br /&gt;
&lt;br /&gt;
T. P. Harty, T. W. Berger, R. J. Sclabassi, G. Barrionuevo, “Nonlinear systems analysis of the in vitro hippocampal dentate gyrus. I. Characterization of granule cell response to perforant path input,” Doctor thesis, Univ. Pittsburgh, Pittsburgh, PA, 1998.&lt;br /&gt;
&lt;br /&gt;
T. P. Harty, T. W. Berger, R. J. Sclabassi, and G. Barrionuevo, “Nonlinear systems analysis of the in vitro hippocampal dentate gyrus. II. Contribution of GABAA and GABAB receptor function,” Doctor thesis, Univ. Pittsburgh, Pittsburgh, PA, 1998.&lt;br /&gt;
&lt;br /&gt;
T. P. Harty, T. W. Berger, R. J. Sclabassi, and G. Barrionuevo. “Nonlinear systems analysis of the in vitro hippocampal dentate gyrus. III. Characterization of open-loop properties of the perforant path-granule cell projection,” Doctor thesis, Univ. Pittsburgh, Pittsburgh, PA, 1998.&lt;br /&gt;
&lt;br /&gt;
T. W. Berger, D. Song, R. H. Chan, and V. Z. Marmarelis, “The neurobiological basis of cognition: Identiﬁcation by multi-input, multioutput nonlinear dynamic modeling: A method is proposed for measuring and modeling human long-term memory formation by mathematical analysis and computer simulation of nerve-cell dynamics,” Proc. IEEE, vol. 98, no. 3, pp. 356–374, Mar. 2010.&lt;br /&gt;
&lt;br /&gt;
モデルの大規模化に向けた計算効率化に関する論文はこちら。&lt;br /&gt;
&lt;br /&gt;
E. M. Izhikevich, “Simple model of spiking neurons,” IEEE Trans. Neural Netw., vol. 14, no. 6, pp. 1569–1572, Nov. 2003.&lt;br /&gt;
&lt;br /&gt;
E. M. Izhikevich, “Resonate-and-ﬁre neurons,” Neural Netw., vol. 14, pp. 883–894, 2001.&lt;br /&gt;
&lt;br /&gt;
R. M. Rose and J. L. Hindmarsh, “The assembly of ionic currents in a thalamic neuron. I. The three-dimensional model,” Proc. R. Soc. Lond. B Biol. Sci., vol. 237, pp. 267–288, 1989.&lt;br /&gt;
&lt;br /&gt;
B. Ermentrout, “Type I membranes, phase resetting curves, and synchrony,” Neural Comput., vol. 8, pp. &lt;a href=&quot;tel:979%E2%80%931001&quot; x-apple-data-detectors-result=&quot;8&quot; x-apple-data-detectors-type=&quot;telephone&quot; x-apple-data-detectors=&quot;true&quot;&gt;979–1001&lt;/a&gt;, 1996.&lt;br /&gt;
&lt;br /&gt;
G. D. Smith, C. L. Cox, S. M. Sherman, and J. Rinzel, “Fourier analysis of sinusoidally driven thalamocortical relay neurons and a minimal integrateand-ﬁre-or-burst model,” J. Neurophysiol., vol. 83, pp. 588–610, 2000.&lt;br /&gt;
&lt;br /&gt;
ニューロンの前シナプスからの刺激に対する反応やその非線形性に着目したモデル化はこちら。なお、&lt;i&gt;R. J. Sclabassi et al&lt;/i&gt; は本論文と同様に3機能からなるニューロンモデルであり、それらは前シナプスから PSP への変換、活動電位の生成、活動電位からの膜電位の更新である。&lt;br /&gt;
&lt;br /&gt;
G. Gholmieh, S. Courellis, V. Marmarelis, and T. Berger, “An efﬁcient method for studying short-term plasticity with random impulse train stimuli,” J. Neurosci. Methods, vol. 121, pp. 111–127, 2002.&lt;br /&gt;
&lt;br /&gt;
T. W. Berger, J. L. Eriksson, D. A. Ciarolla, and R. J. Sclabassi, “Nonlinear systems analysis of the hippocampal perforant path-dentate projection. III. Comparison of random train and paired impulse stimulation,” J. Neurophysiol., vol. 60, pp. 1095–1109, 1988.&lt;br /&gt;
&lt;br /&gt;
T. W. Berger, J. L. Eriksson, D. A. Ciarolla, and R. J. Sclabassi, “Nonlinear systems analysis of the hippocampal perforant path-dentate projection. II. Effects of random impulse train stimulation,” J. Neurophysiol., vol. 60, pp. 1076–1094, 1988.&lt;br /&gt;
&lt;br /&gt;
R. J. Sclabassi, J. L. Eriksson, R. L. Port, G. B. Robinson, and T. W. Berger, “Nonlinear systems analysis of the hippocampal perforant path-dentate projection. I. Theoretical and interpretational considerations,” J. Neurophysiol., vol. 60, pp. 1066–1076, 1988.&lt;br /&gt;
&lt;br /&gt;
本論文と同じような、ニューロンの実際の活動の観測からモデル化した論文はこちら。但し、この論文では閾値以上の活動のみに着目して実施されている（本論文は閾値以下も考慮）。一方でこの論文は CA3 から入力される複数の（並列な）入力と複数の出力が可能なモデルを構築している。&lt;br /&gt;
&lt;br /&gt;
D. Song, R. H. M. Chan, V. Z. Marmarelis, R. E. Hampson, S. A. Deadwyler, and T. W. Berger, “Nonlinear dynamic modeling of spike train transformations for hippocampal-cortical prostheses,” IEEE Trans. Biomed. Eng., vol. 54, no. 6, pp. 1053–1066, Jun. 2007.&lt;br /&gt;
&lt;br /&gt;
Volterra モデルに関する論文はこちら。&lt;br /&gt;
&lt;br /&gt;
D. Song, V. Z. Marmarelis, and T. W. Berger, “Parametric and nonparametric modeling of short-term synaptic plasticity. Part I: Computational study,” J. Comput. Neurosci., vol. 26, pp. 1–19, 2009.&lt;br /&gt;
&lt;br /&gt;
V. Z. Marmarelis, “Identiﬁcation of nonlinear biological systems using Laguerre expansions of kernels,” Ann. Biomed. Eng., vol. 21, pp. 573–589, 1993.&lt;br /&gt;
&lt;br /&gt;
海馬の、特にCA1あたりの神経網構造に関する医学的知見論文はこちら。&lt;br /&gt;
&lt;br /&gt;
T. W. Blackstad, “Commissural connections of the hippocampal region in the rat, with special reference to their mode of termination,” J. Comput. Neurol., vol. 105, pp. 417–537, 1956.&lt;br /&gt;
&lt;br /&gt;
J. Storm-Mathisen and F. Fonnum, “Localization of transmitter candidates in the hippocampal region,” Prog. Brain Res., vol. 36, pp. 41–58, 1972.&lt;br /&gt;
&lt;br /&gt;
前シナプスの電位からPSPsを生成するフィードフォワードカーネルのモデル化についてはこちら。&lt;br /&gt;
&lt;br /&gt;
P. Poirazi, T. Brannon, and B. W. Mel, “Arithmetic of subthreshold synaptic summation in a model CA1 pyramidal cell,” Neuron, vol. 37, pp. 977–987, 2003.&lt;br /&gt;
&lt;br /&gt;
D. Song, V. Z. Marmarelis, and T. W. Berger, “Parametric and non-parametric models of short-term plasticity,” in Proc. 2nd Joint EMBS/BMES Conf., 2002, pp. 1964–1965.&lt;br /&gt;
&lt;br /&gt;
R. S. Zucker and W. G. Regehr, “Short-term synaptic plasticity,” Annu. Rev. Physiol, vol. 64, pp. 355–405, 2002.&lt;br /&gt;
&lt;br /&gt;
活動電位の膜電位更新に向けたフィードバックカーネルに関してはこちら。&lt;br /&gt;
&lt;br /&gt;
W. Gerstner and W. Kistler, Spiking Neuron Models: Single Neurons, Populations, Plasticity. Cambridge, CA, U.K.: Cambridge Univ. Press, 2002.&lt;br /&gt;
&lt;br /&gt;
D. Song, Z. Wang, and T. W. Berger, “Contribution of T-type VDCC to TEA-induced long-term synaptic modiﬁcation in hippocampal CA1 and dentate gyrus,” Hippocampus, vol. 12, pp. 689–697, 2002.&lt;br /&gt;
&lt;br /&gt;
L. Paninski, J. W. Pillow, and E. P. Simoncelli, “Maximum likelihood estimation of a stochastic integrate-and-ﬁre neural encoding model,” Neural Comput., vol. 16, pp. 2533–2561, 2004.&lt;br /&gt;
&lt;br /&gt;
R. Jolivet, T. J. Lewis, and W. Gerstner, “Generalized integrate-and-ﬁre models of neuronal activity approximate spike trains of a detailed model to a high degree of accuracy,” J. Neurophysiol., vol. 92, pp. 959–976, 2004.&lt;br /&gt;
&lt;br /&gt;
B. E. Alger and R. A. Nicoll, “Pharmacological evidence for two kinds of GABA receptor on rat hippocampal pyramidal cells studied in vitro,” J. Physiol., vol. 328, pp. 125–141, 1982.&lt;br /&gt;
&lt;br /&gt;
T. W. Berger, G. Chauvet, and R. J. Sclabassi, “A biologically based model of functional properties of the hippocampus,” Neural Netw., vol. 7, pp. 1031–1064, 1994.&lt;br /&gt;
&lt;br /&gt;
J. Keat, P. Reinagel, R. C. Reid, and M. Meister, “Predicting every spike: A model for the responses of visual neurons,” Neuron, vol. 30, pp. 803–817, 2001.&lt;br /&gt;
&lt;br /&gt;
Volterra モデル、そのカーネルの展開にラゲール関数を使う方法に関してはこちら。&lt;br /&gt;
&lt;br /&gt;
V. Z. Marmarelis, “Identiﬁcation of nonlinear biological systems using Laguerre expansions of kernels,” Ann. Biomed. Eng., vol. 21, pp. 573– 589, 1993.&lt;br /&gt;
&lt;br /&gt;
V. Z. Marmarelis,Nonlinear Dynamic Modeling of Physiological Systems. New York: Wiley, 2004.&lt;br /&gt;
&lt;br /&gt;
T. P. Zanos, S. H. Courellis, T. W. Berger, R. E. Hampson, S. A. Deadwyler, and V. Z. Marmarelis, “Nonlinear modeling of causal interrelationships in neuronal ensembles,” IEEE Trans. Neural Syst. Rehabil. Eng., vol. 16, no. 4, pp. 336–352, Aug. 2008.&lt;br /&gt;
&lt;br /&gt;
ラゲール関数の変数 α の準ニュートン法による解法はこちら。&lt;br /&gt;
&lt;br /&gt;
T. F. Coleman and Y. Li, “On the convergence of interior-reﬂective Newton methods for nonlinear minimization subject to bounds,” Math. Program., vol. 67, pp. 189–224, 1994.&lt;br /&gt;
&lt;br /&gt;
ラゲール関数の過学習についてはこちら。&lt;br /&gt;
&lt;br /&gt;
D. Song, R. H. Chan, V. Z. Marmarelis, R. E. Hampson, S. A. Deadwyler, and T. W. Berger, “Nonlinear modeling of neural population dynamics for hippocampal prostheses,” Neural Netw., vol. 22, pp. 1340–1351, 2009.&lt;br /&gt;
&lt;br /&gt;
ニューロンの確率的な振る舞い、特に観測できない入力による確率的振る舞いやその他固有のランダムな振る舞いに関してはこちら。&lt;br /&gt;
&lt;br /&gt;
E. Schneidman, B. Freedman, and I. Segev, “Ion channel stochasticity may be critical in determining the reliability and precision of spike timing,” Neural Comput., vol. 10, pp. 1679–1703, 1998.&lt;br /&gt;
&lt;br /&gt;
A. Destexhe and D. Contreras, “Neuronal computations with stochastic network states,” Science, vol. 314, pp. 85–90, 2006.&lt;br /&gt;
&lt;br /&gt;
F. S. Chance, L. F. Abbott, and A. D. Reyes, “Gain modulation from background synaptic input,” Neuron, vol. 35, pp. 773–782, 2002.&lt;br /&gt;
&lt;br /&gt;
ニューロンのダイナミックしきい値に関してはこちら。&lt;br /&gt;
&lt;br /&gt;
D. A. Henze and G. Buzsaki, “Action potential threshold of hippocampal pyramidal cells in vivo is increased by recent spiking activity,” Neuroscience, vol. 105, pp. 121–130, 2001.&lt;br /&gt;
&lt;br /&gt;
M. Sekerli, C. A. Del Negro, R. H. Lee, and R. J. Butera, “Estimating action potential thresholds from neuronal time-series: New metrics and evaluation of methodologies,” IEEE Trans. Biomed. Eng., vol. 51, no. 9, pp. 1665–1672, Sep. 2004.&lt;br /&gt;
&lt;br /&gt;
可塑性獲得に向けたニューロンモデルについてはこちら。&lt;br /&gt;
&lt;br /&gt;
R. H. Chan, D. Song, and T. W. Berger, “Tracking temporal evolution of nonlinear dynamics in hippocampus using time-varying volterra kernels,” inProc. IEEE Conf. Eng. Med. Biol. Soc., Aug. 2008, vol. 2008, pp. 4996–4999.&lt;br /&gt;
&lt;br /&gt;
R. H. Chan, D. Song, and T. W. Berger, “Nonstationary modeling of neural population dynamics,” in Proc. IEEE Conf. Eng. Med. Biol. Soc., Sep., 2009, vol. 2009, pp. 4559–4562.</content><link rel='replies' type='application/atom+xml' href='http://ceromondo.blogspot.com/feeds/6339671986412753746/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ceromondo.blogspot.com/2013/05/memory-implants.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/6339671986412753746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/6339671986412753746'/><link rel='alternate' type='text/html' href='http://ceromondo.blogspot.com/2013/05/memory-implants.html' title='海馬におけるニューロンの非線形活動をモデリングしてみたよ - Memory Implants 関連論文'/><author><name>goemondo</name><uri>http://www.blogger.com/profile/17435609166287599853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBzzt2y_e87Gq_DyMOP7hLXjtzTK0S-UI-KcbukCTAe68exHWX3dwUwrXC1u6f0jRaJzF8-DbBz8Mxokx38sT-4s94c4VvJ2By6g6075v6WksNTNZsddzCT4p-IYM4Sg/s220/profile.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDQkus04-kBzP3Cf53Eikur5IhXUJwwFMtoWUMeu3UelKjaih0suPaHRJs7LdmbvMfRNMl5AumjJ_LY8KQOlyEDGteJQNz2Ay8iZNhyWY9RWCRg17Cdu3qhxw9TxFEXxK13I-7w9XINDd-/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-05-21+23.39.31.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7457791004653031882.post-1673974409666802039</id><published>2013-05-14T08:56:00.002+09:00</published><updated>2013-05-28T08:52:22.690+09:00</updated><title type='text'>Memory Implants - MIT Technology Review</title><content type='html'>&lt;a href=&quot;http://www.technologyreview.com/&quot;&gt;MIT Technology Review&lt;/a&gt; の &lt;a href=&quot;http://www.technologyreview.com/featuredstory/513681/memory-implants/&quot;&gt;10 Breakthrough Technologies 2013&lt;/a&gt; に Memory Implants が。昔、どこかでも記事にされてたよなと Google 先生に聞いたところ Gizmode でした（&lt;a href=&quot;http://www.gizmodo.jp/sp/2011/06/memory_repairing.html&quot;&gt;脳のメモリー拡張技術、ついに実現&lt;/a&gt;）。&lt;br /&gt;
&lt;br /&gt;
その時はさらっと読んだ程度だったのですが、そのI/F、内部処理などに興味が沸いたので少々まとめさせてもらいました。&lt;br /&gt;
&lt;br /&gt;
まずは MIT Technology Review の Memory Implants をさらっと。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;MIT Technology Review による概要&lt;/h3&gt;アルツハイマー疾患や外傷により、長期記憶障害を持った人のために、長期記憶を補助するメモリインプラントを開発することを目的に、35年ほど研究を重ねる。&lt;br /&gt;
&lt;br /&gt;
内耳にあり聴覚を司る感覚器官、蝸牛管に代わる人工器官、ロボット的な腕の操作指示器官、網膜器官など、五感の電気信号化は結構進んでいてしかも成功している。一方で、記憶の制御は複雑で難しい。&lt;br /&gt;
&lt;br /&gt;
Berger 教授らは長期記憶障害を持った人にその補助器官を提供するために、短期記憶から長期記憶を生成する海馬の神経の振る舞いに着目。海馬における長期記憶形成のための電気信号の遷移フローを記録、それを模倣する数学モデルに落としこみ、デバイスに実装して、対象にインプラントする、という流れで研究。&lt;br /&gt;
&lt;br /&gt;
記憶とは一定数のニューロンによって生成される電気信号の時系列上のシリーズ。記憶しているシリーズの単位は可変で、あるシリーズの一部をシリーズとすることもでき、結果記憶のフレームワークと呼ぶものが出来上がる。例えば、人の外見的特徴の記憶には海馬の500,000の細胞が使われ、それら細胞群は個々のコードで構成される。目と鼻の相対位置を示すコードなどで。&lt;br /&gt;
&lt;br /&gt;
これらのシリーズは特定の行動で発生する神経網の活動時に、脳に電極を入れてシリーズを記録する。例えば2147のニューロンからなる記憶シリーズを発見した。なお、記憶がシリーズで構成されていることは、従来の研究成果から言われていることで、表面的には新規ではない。しかし従来の研究では、単なる表面的な事象のみで検討を終了していた。&lt;br /&gt;
&lt;br /&gt;
研究の開始はハーバード大学院の Richard Thompson 氏の元で。彼は神経活動の局所性や学習過程におけるその変化に関して研究をしていた。その時の研究は、要はパブロフの犬的に、実験うさぎに対して音やふっと空気を吹きかけたりして瞬きする時に、その記憶は脳のどこに保持されるのか、というもの。1976年に論文としてまとめた。この論文では、&lt;b&gt;電位変化の振幅&lt;/b&gt;と、その&lt;b&gt;空間的なパターン&lt;/b&gt;に着目、例えばうさぎが記憶を更新する時の海馬における電位変化の時系列パターンに着目していた。&lt;br /&gt;
&lt;br /&gt;
だがはたしてそれで、それだけで良いのか？というのが現在の研究の根幹。具体的に、ニューロン間の電気信号受け渡しにおける量的なパターンはどのようなものか？言い換えると（言い換えてるか？）ある時間、場所で発火したニューロンのご近所さんニューロンはどのように振る舞うか？なのでここの量的とは神経伝達物質がどの程度の量で遷移するかということではなく、どの程度の空間的、時間的な広がりで拡散するか、ということ。それこそが長期記憶のコーディングである。&lt;br /&gt;
&lt;br /&gt;
1980年代にピッツバーグ大学にて Robert Sclabassi 氏と共に、うさぎの海馬のニューラルネットワークの遷移、具体的に特定のニューロンから他のニューロン群への電気信号の遷移をシミュレートした。結果、2つのニューロン間における電気信号の遷移は一見&lt;b&gt;非線形&lt;/b&gt;であった。その本質は線形な総和演算であるものの、いくつかの入力信号は抑圧され、また別の入力信号が強調される非線形性にあった。つまり、（脳内では基本的に条件付き演算などないが）外部から見ると非線形に見える、入力信号の量的な通信変化と線形な総和演算であることがわかった。&lt;br /&gt;
&lt;br /&gt;
90年代に入り理論と実現可能なコンピューティングが揃ってきたので、海馬の信号処理を模倣するチップを南カルフォルニア大学で Vasilis ­Marmarelis 氏らと開発してみた。詳細に、ラットの海馬（スライス）のあらゆる場所に対して、ランダムな電気信号を入力し、信号遷移を監視、入出力の組合せを数学モデル（方程式）に落とし込み、最終的にチップとしてインプリした。インプリしたチップが海馬の一機能として動作するかを検証するために、脳の中心的な構成要素をチップに（電極を経由して）バイパスして正常動作するかどうかを調査した。そしてそれは成功した（ちゃんと電極を経由してチップに信号が入力されたし、もう一方の電極を通してチップから脳に出力された）。また、生きたラットでチップを実験しても、ちゃんと海馬の機能を満たした。&lt;br /&gt;
&lt;br /&gt;
また、2つのレバーから正しいレバーを押すと報酬が貰える実験にて、正解ケース（と間違いケース）の海馬の電気遷移シリーズを記録し、そのデータを使って、学習における長期記憶変換課程の信号遷移をモデル化した。その実験では、記憶そのものと思われるコードをも取得した。最終的に、訓練対象のラットに長期記憶を読み出せなくする薬剤を投与し、正しいレバーを選択できなくしたラットに対して、コードを与え正しいレバーが選択されることを確認した。&lt;br /&gt;
&lt;br /&gt;
近年では、海馬により生成された記憶を検索する前頭葉皮質を持つ霊長類を対象に実験している。その実験では、過去に見た画像を思い出す際に猿の前頭葉で形成されるコードをキャプチャし、コカインを与え脳の活動を減衰させた猿に対して、電極を経由してキャプチャしたコードを与えた結果、画像認識能力が飛躍的に改善した。&lt;br /&gt;
&lt;br /&gt;
今後は、様々なシチュエーションの長期記憶を海馬チップにて実現させたい。&lt;br /&gt;
&lt;br /&gt;
結局のところ、記憶の数学モデルは特定のシンプルなタスクに関連したコードから派生したもので、言い換えるとそれらに依存しているので汎化されているとは言えない。そこは Berger 氏も認めている。ただ、脳内はパターンは多数あるものの、実際には「神経網の遷移」ただそれだけなので、様々なパターンのモデルを作れるだろうと、汎化したいと。&lt;br /&gt;
&lt;br /&gt;
さらにはてんかん患者の発作を抑えるために、海馬の一部分をチップにてバイパスすることも計画中である。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;感想、というか次の文献漁りのための観点整理&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;まさに中国人の部屋アプローチ、だけどちゃんと形にするとすごいねぇ&lt;/li&gt;
&lt;li&gt;特定の感覚下での海馬の処理を模倣したとの記載がある一方で、ランダムな入力群とその出力のセットをインプリして正常動作したとの記載もある。前者はミクロからマクロへのアプローチだけど、後者はブルートフォースなアプローチ。しかも後者はある意味で海馬の全機能を満足しているとも言える。結論は前者についてだから、読み間違えか。とすると、ランダムという文言は「特定の感覚下でランダムに見える信号郡」という意味であり、やはり網羅性を達成するにはもうひとつブレークスルーを超える必要があるかと&lt;/li&gt;
&lt;li&gt;どれほどの数学モデルを構築したのか、興味がそそられる。ちゃんと読んでみないとわからないけど、回帰してるだけな気もする。そうであれば、モデル自体にはあまり価値はなさそうな予感がする。もしくは神経網をそのまま論理回路（マルチプレクサネットワーク）にマッピングしただけなのだろうか&lt;/li&gt;
&lt;li&gt;どちらかと言うと、モデル構築よりもインプラントする際の神経網とのI/Fが気になる。だって、あるニューロンプールへの入力/出力なんて１つではないわけで、それら全てに電極接続したのだろうか。これこそI/Fを整理しないといけなさそうだけど、一方は進化（成長）による自己中さんなので難しそう&lt;/li&gt;
&lt;li&gt;またI/Fに関して、どうやって量的な接続を解決したのだろうか。単に電気信号を送受信するだけで良いのだろうか。イオンとして化学物質としての送受信がキーになると思ってたのだけど&lt;/li&gt;
&lt;li&gt;論理回路は同期型だと思うけど、本当にそれで良いのか。やっぱI/Fに関わるとこだけど、信号伝達のタイミングが重要そうな気がする&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceromondo.blogspot.com/feeds/1673974409666802039/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ceromondo.blogspot.com/2013/05/memory-implants-mit-technology-review.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/1673974409666802039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/1673974409666802039'/><link rel='alternate' type='text/html' href='http://ceromondo.blogspot.com/2013/05/memory-implants-mit-technology-review.html' title='Memory Implants - MIT Technology Review'/><author><name>goemondo</name><uri>http://www.blogger.com/profile/17435609166287599853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBzzt2y_e87Gq_DyMOP7hLXjtzTK0S-UI-KcbukCTAe68exHWX3dwUwrXC1u6f0jRaJzF8-DbBz8Mxokx38sT-4s94c4VvJ2By6g6075v6WksNTNZsddzCT4p-IYM4Sg/s220/profile.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7457791004653031882.post-7961713333523616852</id><published>2013-04-19T23:50:00.000+09:00</published><updated>2013-05-01T13:54:59.564+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="confidence interval"/><category scheme="http://www.blogger.com/atom/ns#" term="covariance matrix"/><category scheme="http://www.blogger.com/atom/ns#" term="Dapper"/><category scheme="http://www.blogger.com/atom/ns#" term="distributed data center"/><category scheme="http://www.blogger.com/atom/ns#" term="monitoring"/><category scheme="http://www.blogger.com/atom/ns#" term="normal distribution"/><category scheme="http://www.blogger.com/atom/ns#" term="信頼区間"/><category scheme="http://www.blogger.com/atom/ns#" term="分散共分散行列"/><category scheme="http://www.blogger.com/atom/ns#" term="正規分布"/><title type='text'>Uncertainty in Aggregate Estimates from Sampled Distributed Traces</title><content type='html'>ひっさびさのポスト。&lt;br /&gt;
&lt;br /&gt;
&quot;Uncertainty in Aggregate Estimates from Sampled Distributed Traces&quot;, Nate Coehlo, Arif Merchant, Murray Stokely, Workshop on Managing Systems Automatically and Dynamically, USENIX, 2012. の勝手な意訳です。統計学に詳しくない人は想定読者に入ってなかったようで、行間を読むのに必死というか、何度バッドエンドに導かれたことか。&lt;br /&gt;
&lt;br /&gt;
もし訳掲載に問題がある、訳し間違いがある、などあれば連絡ください。&lt;br /&gt;
&lt;br /&gt;
Abstract では伝わらないこの論文の流れは以下の通り。&lt;br /&gt;
&lt;br /&gt;
この論文の課題は「分散データセンターシステムでデータセンター間の通信をサンプリングして、その標本から全体の（母集団の）通信量を推定できてたんだけど、それってどのくらいばらつきがあるんだろう？」というもの。&lt;br /&gt;
&lt;br /&gt;
ひるがえって目的は分散システムの計測から得られる標本から真の値、換言して母集団の平均を推定して、母集団の平均からの信頼区間を推定したい。それによってばらつきを考慮した標本の評価が推定できるから。&lt;br /&gt;
&lt;br /&gt;
目的達成へのアプローチは下記。&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;標本から母集団を考慮した推定値を求める&lt;/li&gt;&lt;li&gt;複数の標本から導出した推定値間の共分散を求めて分散共分散行列を導出&lt;/li&gt;&lt;li&gt;母集団が正規分布であると仮定して、求めた分散共分散行列を使って推定母集団分布を得る&lt;/li&gt;&lt;li&gt;信頼区間を設定する&lt;/li&gt;&lt;li&gt;不確実性を考慮した集約量を得る&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;Abstract&lt;/h3&gt;分散システムでは、システムの稼働がオーバーヘッドにならないように制御するために、追跡メカニズムを使って常にシステムの状態をサンプリングし、システム特性を把握する上で重要な洞察を与えてくれる。Google では Dapper [8] が分散システムを常にトレースし、性能分析を行う。また RPC トラフィックの一部をサンプリングする。システムの実装の複雑性やデータボリュームの巨大さ、予兆検知の不完全さのために、トレース対象のデータ量を直接的に計測する事ができない時がある。Dapper は短期・長期に関わらず、ノード間でやり取りされるデータ量を推定するためのデータを集約できる。さて、我々は Dapper が取得する全ての階層の RPC を活用し、線形な統計処理を行うことで不偏分散を推定する手法を発見した。この手法により推定に使用するサンプリングの不確実性を定量化できる。我々はこの手法を Google データセンターでのジョブやデータの割り当て問題に適用し、最適化規準としてのデータセンター間トラフィックの推定値を導出した結果、特定のデータパーティションへのアクセスパターンの変動点を検知できることを明らかにした。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;1. Introduction&lt;/h3&gt;広域な分散コンピューティング環境における多くの用途に対して、集約されたシステムメトリック（訳注：原語は&quot;metric&quot;、本訳では計測値とかログとして捉える）が評価される。具体的に、設定値更新の効果予測、容量計画（capacity planning）、性能デバッグ、システム量タイムラインの変動点検知、管理ポリシーの更新シミュレーションなどに適用される。例えば、マルチデータセンター環境において、定期的に他のデータセンターへユーザ処理やアプリケーションデータを再割り当てすることが望まれるだろう。このデータ等の移動による効果を評価するには、いくつかの集約情報、例えばデータ移動に伴うデータセンター間のトラフィック情報や、各データセンターに配置されるアプリケーションが要求するCPUやネットワークリソース情報などを評価する必要がある。多くの組織では遠隔監視システムを配備し [4, 5]、必要なシステムメトリックを記録する。しかし、これらメトリックは頻繁に記録されないことがある。この度々発生する不記録は、取得可能なメトリック数が多量であること、さらにはシステムの実装が複雑であり、その複雑さを想定することは不可能であることに起因する。&lt;br /&gt;
&lt;br /&gt;
Google では一般の遠隔監視システムに加え、Dapper [8] という名のユビキタスなトレース機構を実装している（訳注：ここでは単に Dapper deamon が各ノードに分散する分散型データ収集システムという意味）。この Dapper は分散制御パス（訳注：原語では &quot;distributed control paths&quot; であるが分散制御パスそのものでなく「分散制御パスの自動トレース」として利用していると思う。詳細は &lt;a href=&quot;http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/ja//pubs/archive/36356.pdf&quot;&gt;Dapper, a Large-Scale Distributed Systems Tracing Infrastructure&lt;/a&gt; を参照）を可能とする。Google のプロセス間通信の多くはRPCをベースとしており、Dapper はそのオーバーヘッド制約（送信可能な最大値・容量）を守ることを目的に（その評価を行うために）サンプリングする。このようなトレースはしばしばアプリケーション開発者により生成される詳細な注釈を含む。このトレース基盤の第一の目的が分散システムで発生する問題をデバッグすることである一方、サービスのネットワーク利用状況や、共有ストレージにおけるユーザのリソース消費率を監視するといった、別の目的にも利用できる。&lt;br /&gt;
&lt;br /&gt;
Dapper や Fay [7]、Dapper に触発され開発された Zipkin [1] などのサンプリングによって、システムからの集約量推定は容易となった（訳注：&quot;aggregate quantities&quot;, &quot;aggreagated quantities&quot; を集約量と訳している。一般にシステム負荷を考慮して全てのメトリック、例えば全ての RPC を収集するのは現実的でないので、サンプリングすることになる。知りたいのは母集団の情報であり、そこでサンプリングされた標本から母集団を推定することになる。Dapper などは BigTable と連携するためこの推定が容易であるということ）。しかし、推定の確実性（不確実性）の評価もそれらトレースシステムに実装されるべきであり、本研究の成果はこれに貢献する。本研究では Dapper のサンプリングのメカニズムの性質に着目し、それが集約するメトリックに関する共分散推定手法を確立した。この共分散推定により、集約するメトリックに信頼区間を設定でき、関連する仮説検定を実行できる。&lt;br /&gt;
&lt;br /&gt;
2章では Dapper における統計的性質についてまとめる。3章では推定フレームワークと共分散推定のアルゴリズムをまとめる。なお、それらの証明は Appendix A に示す。4章では分散システムに本フレームワークを適用した2つの統計分析の実例を示す。5章は結論である。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;2. Background on RPC Sampling（訳注追加で恐ろしく分量が増えました。専門の人にはありがた迷惑な状態です）&lt;/h3&gt;システムサンプリングから得られる集約量の推定はシンプルである。計測された RPC それぞれに関して、計測結果とサンプリング確率が明らかであるとする（訳注：計測結果の原語は &quot;result&quot;、「標本」と同じ意味で利用している。例えば後半に例として登場するデータセンターをまたいだデータアクセス数を推定したいとする。具体的にデータセンター1からデータセンター2へのデータ参照要求数を推定したい。この時、データ参照要求は RPC としてデータセンター間で送受信される。この場合は RPC に含まれるデータ参照要求に関する何かしらの定量値が計測結果である。また、サンプリング確率の原語は &quot;sampling probability&quot; で、どの程度サンプリングできたか。サーバ間パスの RPC をサンプリングする場合、送信元もしくは送信先のサーバでどの程度サンプリングするかを指定できる。例えば一定周期にサンプリングするタイムベースサンプリングだとサンプリング間隔を監視期間で割ったものとなり、ハッシュベースサンプリングではサンプリング時点でタッチした RPC 数を母数として実際に取得したサンプルの数を割ったもの）（訳注2：&lt;a href=&quot;http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/ja//pubs/archive/36356.pdf&quot;&gt;Dapper, a Large-Scale Distributed Systems Tracing Infrastructure&lt;/a&gt; の4.4節によると、初期バージョンの Dapper では一様サンプリングを採用していたが、一様サンプリングでは例えば回線監視において、トラフィックが低負荷な状態の時、もう少しサンプリングレートを上げても性能上問題ないにも関わらず、レートが固定なので重要な・サンプリングすべきデータを欠損してしまうかもしれない。その問題を回避するために現在のバージョンでは適応型サンプリング（Adaptive sampling）を採用している。この結果、低負荷な時はサンプリングレートを上げ、高負荷な時はレートを下げるということが可能となる。なお、Dapper ではその実装上、実際のサンプリングレートは計測データに付与され、BigTable を持つコントローラに送付される。よって、計測データがある＝その結果内容とサンプリング確率が既知、となる）。この前提において、サンプリング確率の逆数により重み付けされた計測結果を総和することにより（訳注：例えば先のデータセンターまたぎのデータアクセス数推定の場合、一つの RPC に含まれるデータ参照要求数をサンプリングした標本数分加算して、母集団の推定のためにサンプリング確率で割る事になる）、その標本の母集団の集約量の不偏推定を得る。しかし、この推定の不確実性（＝分散）を計算するには、任意の2つの RPC に関するサンプリング確率の結合確率が必要となる（訳注：後述されるように分散共分散行列を求めるので、全 RPC 標本に関する共分散を計算するために、任意の2つの分散パスの RPC 標本間で相関を取ることになる。ここで先の通り全ての計測結果（RPC 標本）はそのサンプリング確率の逆数により重み付けされているので、相関を取る→標本の各要素間をかける→それぞれのサンプリング確率をかける→結合確率を求めることになる、ということ）。また、サンプリング機構の深い理解も必要不可欠である。&lt;br /&gt;
&lt;br /&gt;
分散システムにおける RPC はユーザリクエスト毎にグループ化できる（訳注：ユーザリクエストは原語では &quot;Initiator&quot;、分散システムにリクエストを発行して、リクエスト受信ノードから別ノードへ RPC が発生するので、ユーザ発行リクエストによりグループ化できる）。我々はこのグループを「&lt;i&gt;トレース&lt;/i&gt;」として参照する。Google システムではそれぞれのトレースに ID が付与される。ID は 64bit の符号なし整数であり、トレース内の全ての RPC はこの ID をシェアする。ID は &quot;設定可能な範囲で&quot; ランダムに選択される。具体的に、サンプリング確率が s 以下である RPC で構成されるトレースの ID は ID &amp;lt; (2&lt;sup&gt;64&lt;/sup&gt; - 1) * &lt;i&gt;s&lt;/i&gt; となるように設定する。なお、我々は &lt;i&gt;s&lt;/i&gt; をサーバサンプリング確率と呼んでいる。さらに [8] の4.6節で説明されるように、Dapper では独立に（異なる種類の）サンプリングステージ（ステップ）を走らせる事ができ、その結果、収集・格納する RPC を削減できる（訳注：[8] 4.6節によるとトレースを格納する DB に挿入する前処理としてサンプリング（というよりフィルタリングと言う方が適切）できる機構を用意している。具体的に、トレース ID からハッシュを計算し、ハッシュが設定しきい値より小さければ DB である BigTable に格納する。そうでなければ破棄する。ここで、DB は分散 KVS である BigTable を使っているので、原文では&quot;an independent sampling stage can occur at some nodes&quot;と記載される。なお、 Google クラスタではトレースデータだけで1日に 1TB 以上生成されるらしい。すごい。）。我々はこのサンプリングデータ削除法をダウンサンプリングと呼ぶ。ダウンサンプリングはトレース ID のハッシュをベースとし、hash(ID) &amp;lt; (2&lt;sup&gt;64&lt;/sup&gt; - 1) * &lt;i&gt;d&lt;/i&gt; となるよう制約する。ここで &lt;i&gt;d&lt;/i&gt; はダウンサンプリング係数とする（訳注：[8] 4.6節によると、0 &amp;lt;= d &amp;lt;= 1 なので 0 &amp;lt;= hash(ID) &amp;lt;= 1）。その結果、それぞれのトレース ID は単位正方形上に (s&#39;, d&#39;) としてマップでき（訳注：0 &amp;lt;= s&#39;, d&#39; &amp;lt;= 1 であり s と d を軸とする座標の第一象限の単位正方形上にマップできる）、これらのマップされた点の分布は正規化されていることになり、また、s&#39; &amp;lt;= s かつ d&#39; &amp;lt;= d となる RPC はトレース (s, d) に含まれる（訳追加：かもしれない）（訳注：参考までにイメージ図を図a-1に示す。この手法により、トレース ID だけで 該当する RPC をフィルタリングできるというメリットを生む。[8] 4.6節の通り、Google のような巨大システムで Dapper を稼働させると、恐ろしい量のトレースがログとして発生するので、検索の高速化は必須となるわけで、その時、s と d を指定し全データ検索だと非効率となる。なので、トレース ID でまずは検索範囲を限定する。トレース ID によるフィルタリングは偽陽性なので、指定した ID のトレースに含まれるかもしれないが他の ID を持つトレースの RPC かもしれない。その後、s と d を指定して目的の RPC を得るという流れ）。図1はトレースの例を示している。また、図1には指定される (s&#39;, d&#39;) で取得可能な RPC リストを示している。なお、実行パスがインフラ上の複数のレイヤにまたがる時、トレースには複数のサンプリング属性が付与される可能性がある（訳注：属性に関する説明はなし、[8] を全文読めばわかるのか）。これは開発者が異なるレイヤを異なる方法で構築するかもしれないこと、システム要求に基づくダウンサンプリングが一部のノードだけで実行されるかもしれないことによる（訳注：属性が何かが不明であるため推測だけど、ノード毎に測定仕様が異なるので、それに依存するトレース属性は多種となる、という意味かと）。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbXd2B_l_30sX47C202oHk0AIs-CLOJXR0ZkuhiD-3I7e2e0wDOAv54N6pAC0dmXlU7ojOsR4ewTXmwpiaphkPE-3x-tSyhaSVs5xBWgrjcjYgqAqcZouIs1B3a92n3sYNRxwdoTDRxbJT/s1600/RelationshipBetweenTraceAndRPC.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbXd2B_l_30sX47C202oHk0AIs-CLOJXR0ZkuhiD-3I7e2e0wDOAv54N6pAC0dmXlU7ojOsR4ewTXmwpiaphkPE-3x-tSyhaSVs5xBWgrjcjYgqAqcZouIs1B3a92n3sYNRxwdoTDRxbJT/s320/RelationshipBetweenTraceAndRPC.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図A-1 トレース ID のマップ&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg5Z2_31Zkxrh0oHxggxCzBZgkqkPNhAUXWB9TnY5AiZS4JpnxTY8N9ahk18tpM1C5CapeLFD-Z-gjbnZrAXvQYFj9tBtb15CyBGtBnM2U961knPDzZNUsPm340PJQeaYLIwTDyPJhls7j/s1600/TraceRepresentation.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;261&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg5Z2_31Zkxrh0oHxggxCzBZgkqkPNhAUXWB9TnY5AiZS4JpnxTY8N9ahk18tpM1C5CapeLFD-Z-gjbnZrAXvQYFj9tBtb15CyBGtBnM2U961knPDzZNUsPm340PJQeaYLIwTDyPJhls7j/s320/TraceRepresentation.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図1 トレース表現。異なるサブセットを持つ RPC A〜F がある時（trace ID → (s&#39;, d&#39;)）を満たす値集合を指定することで対応する RPC を得られる（訳注：一意には決まらない）。もし s&#39; &amp;gt; 1/3 なら対象 RPC はない、1/6 &amp;lt; s&#39; &amp;lt;= 1/3 なら RPC D が得られる。s&#39; &amp;lt;= 1/6 かつ d&#39; &amp;lt;= 1/2 なら F 以外の RPC が得られる&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;3. Estimation Results and Algorithms&lt;/h3&gt;対象とするシステム集約量を推定したい。ここで θ を分散システムで発行される RPC 数（もしくは RPC に含まれる値を引数に何かしらの処理をする関数の出力値）の総和とする（訳注：データセンター間通信でやり取りされる、あなたが興味のある RPC の数の総和、つまり母集団の RPC 数の総和）。前節で述べたような RPC （訳注：ID とかがサンプリング確率で決定されている RPC ということ）を前提とし &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\theta}}&quot; /&gt; を θ の不偏推定値、&lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\Sigma}}&quot; /&gt; を &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\theta}}&quot; /&gt; の分散共分散行列の不偏推定とする。これらは θ の不確実性を述べるために利用される。なお &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\theta}}&quot; /&gt; と &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\Sigma}}&quot; /&gt; の不偏性に対して、RPC の（分散システム上の）分布やサーバ要素（訳注：＝サーバサンプリング確率）とダウンサンプリング要素（訳注：＝ダウンサンプリング確率）に関する前提はない。詳細には下記の通りとする（訳注：下記における x は一意の対象を示す変数でなく、その場その場で用いられる変数）。&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;RPC&lt;sub&gt;i&lt;/sub&gt; はトレース ID、サーバ（訳追加：サンプリング）要素およびダウンサンプリング要素、その他の情報 λ により表現される（訳注：λ は評価用のオプションを入れるフィールドであり、例えば λ に評価対象に入れるかどうかのブーリアンを入れておくことで、集計際にたとえ RPC そのものが条件に合う RPC であっても評価の対象から外すことができる）：&lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{RPC_{i} = (ID_{i}, s_{i}, d_{i}, \lambda_{i})}&quot; /&gt;&lt;/li&gt;&lt;li&gt;関数 &lt;i&gt;f&lt;/i&gt; を導入する &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{f : \lambda \longrightarrow x}&quot; /&gt;。関数  &lt;i&gt;f&lt;/i&gt; により &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{(ID_{i}, s_{i}, d_{i}, x_{i})}&quot; /&gt; を得る（訳注： &lt;i&gt;f&lt;/i&gt; は λ を x に写像する関数、もっとシステム的に言えば λ フィールドに x を代入する関数。先の訳注の通り、オプションを RPC に挿入する関数となる。正直、こんな大項目として挙げるほどの重要性はないと思うが）&lt;/li&gt;&lt;li&gt;計測期間中の全ての RPC からなる母集団（非サンプリングの RPC を含め全トレース、全ての s&lt;sub&gt;i&lt;/sub&gt;, d&lt;sub&gt;i&lt;/sub&gt;&amp;nbsp;の母集団）を Ω とする、よって &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\theta = \sum_{i \in \Omega} x_{i}}&quot; /&gt;（訳注：ここで x&lt;sub&gt;i&lt;/sub&gt; は単なる変数で、ここでは RPC&lt;sub&gt;i&lt;/sub&gt; の 有無を示すブーリアン値との認識で良い。なお θ は理論値であり、次節のアルゴリズムでは1トレース内の推定値の全トレース総和で計算している。その等価性は Appendix を参照）&lt;/li&gt;&lt;li&gt;&lt;i&gt;S&lt;/i&gt; を Dapper によりサンプリングされる全ての RPC の集合とする。また、&lt;b&gt;1&lt;/b&gt;&lt;sub&gt;i&lt;/sub&gt; を i 番目にランダムな0/1の2値をとり1の時に集合 S に含まれることを示すベクトルとする。その結果 θ の不偏分散値は次のようになる（訳注：下記式にて真ん中の項が標本集約量、右項が推定システム集約量。同一トレース ID を持つ RPC 集合で考えると分かりやすいが、あるトレースのある分散パス上を流れる RPC の推定量は &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\frac{x_{i}}{s_{i}d_{i}}}&quot; /&gt; でトレース内の全てのパス分だけ足せば良い。同じように、全トレースを総和すれば下記式の真ん中の項となる。また、右項に関して、特に&lt;b&gt;1&lt;/b&gt;&lt;sub&gt;i&lt;/sub&gt; に関して、要素が1の時がサンプリングできた時を示すとあるが、ランダムとの記載もある。3章記載の通り &lt;b&gt;1&lt;/b&gt;&lt;sub&gt;i&lt;/sub&gt; の各要素は 1/確率 = 1/s&lt;sub&gt;i&lt;/sub&gt;d&lt;sub&gt;i&lt;/sub&gt; で 1 となるベクトルであり、s&lt;sub&gt;i&lt;/sub&gt; と d&lt;sub&gt;i&lt;/sub&gt; が同一の標本の &lt;b&gt;1&lt;/b&gt;&lt;sub&gt;i&lt;/sub&gt; は要素の順も同じとしている。また、真ん中の項と計算が合うようにするには前者でないとダメなので（&lt;b&gt;1&lt;/b&gt;&lt;sub&gt;i&lt;/sub&gt; の期待値は 1/s&lt;sub&gt;i&lt;/sub&gt;d&lt;sub&gt;i&lt;/sub&gt; で母集団構成要素分足している）、まったくの完全なランダムではない）。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\hat{\theta} = \sum_{i \in S} \frac{x_{i}}{s_{i} * d_{i}} = \sum_{i \in \Omega} \frac{x_{i} 1_{i}}{s_{i} * d_{i}}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;GetSigmaHat（3.2節で述べる）は &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\Sigma}}&quot; /&gt; を出力する。ここで &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\Sigma}}&quot; /&gt; は先に述べた通り &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\Sigma=Cov \hat{\theta}}&quot; /&gt; の不偏推定値である&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
本論文では、正規近似（normal approximation）を用いて θ を推定する。具体的に &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\theta} \sim \mathcal{N} (\theta, \hat{\Sigma})}&quot; /&gt;、つまり &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\theta}}&quot; /&gt; は平均 &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\theta}&quot; /&gt; 、分散 &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\Sigma}}&quot; /&gt; となる正規分布に従うとする。これは二項分布への正規近似の応用と捉える事ができる（訳注：なぜに二項分布を出したのかわからない。多分 x&lt;sub&gt;i&lt;/sub&gt; がトレースと確率が決まると固定で &lt;b&gt;1&lt;/b&gt;&lt;sub&gt;i&lt;/sub&gt; が確率的に 0/1 であることから来ていると思うんだけど、本当？単に中心極限定理、大数の法則に従うってことと同義との理解で良いのだろうか）。ここで、サンプル数が少なく、サンプルが激しく変化する変数 x&lt;sub&gt;i&lt;/sub&gt;, s&lt;sub&gt;i&lt;/sub&gt;, d&lt;sub&gt;i&lt;/sub&gt; で構成されるケースにおいて正規近似は理想的でない（訳注：二項分布の正規近似時の前提のことを言っていると思われる）。しかし、我々は、分散を考慮することによって実質的な（実体に沿った）値が得られ、さらに本論文での推定を含むあらゆる分析処理における偽陽性に対する保護を得る事ができると信じている（訳注：この最後の文は4.2節での実験の前提のことを言っている。書くと長いのでここでは詳細は省略。しかし、ここでこの文章を入れる意味がわからない。おそらく、この近似でも実際に実験したらたまたま正しかったので、まぁ大丈夫だよ、という程度かと）。&lt;br /&gt;
&lt;br /&gt;
以降では不偏推定 &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\Sigma}}&quot; /&gt; の導出の概要と、シンプルなアルゴリズムとその計算量（複雑さ、complexity）について述べ、次の章にて導出結果の実際の分散システムにおける統計分析への適用に関してまとめる。&lt;br /&gt;
&lt;br /&gt;
（訳注：結局のところ、本論文でやりたいことはシステム集約量 θ の不変推定値 &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\theta}}&quot; /&gt; の信頼性を求めることである。本論文ではその信頼性を &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\theta}}&quot; /&gt; の θ からのばらつきにより求めようとしている。そのばらつきを求めるために &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\Sigma}}&quot; /&gt; を頑張って求めて、正規分布に近似して、真の姿である θ 及びその信頼区間を求めようとしている。）&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;3.1 Calculation Overview&lt;/h3&gt;母集団の分散共分散行列 Σ の不偏推定値（訳注：要は &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\Sigma}}&quot; /&gt; ）の導出は、まず Σ を形式化し、適切に重み付けされた標本集約量を得て不偏推定値を示す流れである。詳細な計算は Appendix に記述するが基本的に計算は下記の3ステップに分けられる。&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;トレースにおいて、&lt;i&gt;s&lt;sub&gt;i&lt;/sub&gt; = s&lt;sub&gt;j&lt;/sub&gt;&lt;/i&gt; かつ &lt;i&gt;d&lt;sub&gt;i&lt;/sub&gt; = d&lt;sub&gt;j&lt;/sub&gt;&lt;/i&gt; の時、0/1のランダムな値を取る &lt;b&gt;1&lt;/b&gt;&lt;sub&gt;i&lt;/sub&gt; と &lt;b&gt;1&lt;/b&gt;&lt;sub&gt;j&lt;/sub&gt; は同じでなければならない。それゆえ &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\theta}}&quot; /&gt; を構成する RPC 集合 S において同じタプル (s, d) を持つ RPC を収集し、同じ (ID, s, d) を持つ RPC を y としてまとめて、その導出された y を単位に再パラメータ化する（訳注：ここでの「まとめる」とはベクトル化するという意味。なので y は 1 × ( x の個数) のベクトル）。これは証明を簡易化し、アルゴリズム処理性能を向上させる（訳注：本論文では単に標本抽出の信頼性を検証したいだけなので、分散パス間を流れる RPC の因果関係や前後関係は無視できる。それゆえ、この操作を入れても問題はない）。詳細は3.2節を参照。&lt;/li&gt;&lt;li&gt;&lt;i&gt;y[j]&lt;sub&gt;i&lt;/sub&gt;&lt;/i&gt; をタプル (ID, s, d)&lt;sub&gt;i&lt;/sub&gt; を持つ再パラメータ化された RPC のベクトルの j 番目を示す表記とする時、共分散は次のようになる（訳注：下式における x は単なる y が代入される変数という意味で利用。なので下式においては x[j]&lt;sub&gt;i&lt;/sub&gt; = y[j]&lt;sub&gt;i&lt;/sub&gt; で良い。また後述のように &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{y[j]_{i}y[k]_{i&#39;} = y[j]_{i} \otimes y[k]_{i&#39;}}&quot; /&gt;。また、前項で定義した y は &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{y[j]_{i \in S}}&quot; /&gt; であったが、ここからは &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{y[j]_{i \in \Omega}}&quot; /&gt; であることに注意。&lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{y[j]_{i \in \Omega}}&quot; /&gt; は非サンプリング分も含まれるのでほとんどがゼロなスパースなベクトル）。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\Sigma_{(j, k)} = Cov(\hat{\theta}_{j}, \hat{\theta}_{k}) = \sum_{i \in \Omega} \sum_{i&#39; \in \Omega} \frac{x[j]_{i} x[k]_{i&#39;}}{s_{i} s_{i&#39;} d_{i} d_{i&#39;}} Cov(1_{i}, 1_{i&#39;})&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
（訳注：y の要素間の外積の成分は下記においてその要素の大半がゼロとなるイメージ。なので、&lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\theta}_{j}}&quot; /&gt; と &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\theta}_{k}}&quot; /&gt; の共分散、つまりは外積にて下記が成分、Cov(1, 1) が方向であると考えるとわかりやすい。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?y_{i} \otimes y_{i&#39;} = \left( \begin{array}{cccc} y[1]_{i}y[1]_{i&#39;} &amp;amp; y[1]_{i}y[2]_{i&#39;} &amp;amp; \cdots &amp;amp; y[1]_{i}y[n]_{i&#39;} \\ y[2]_{i}y[1]_{i&#39;} &amp;amp; y[2]_{i}y[2]_{i&#39;} &amp;amp; \cdots &amp;amp; y[2]_{i}y[n]_{i&#39;} \\ \vdots &amp;amp; &amp;amp; \ddots &amp;amp; \vdots \\ y[n]_{i}y[1]_{i&#39;} &amp;amp; y[n]_{i}y[2]_{i&#39;} &amp;amp; \cdots &amp;amp; y[n]_{i}y[n]_{i&#39;} \end{array} \right)&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
）&lt;br /&gt;
&lt;br /&gt;
上式から分散共分散行列 Σ を導出する問題は (ID&lt;sub&gt;i&lt;/sub&gt;, s&lt;sub&gt;i&lt;/sub&gt;, d&lt;sub&gt;i&lt;/sub&gt;) と (ID&lt;sub&gt;i&#39;&lt;/sub&gt;, s&lt;sub&gt;i&#39;&lt;/sub&gt;, d&lt;sub&gt;i&#39;&lt;/sub&gt;) を持つ2つのサンプル間の共分散を見つけることに帰着する。2章にて述べたようにトレース ID は2つの独立かつ一様にランダムな変数（サンプリング確率とダウンサンプリング確率）を軸とする (0, 1) 領域にマップされる。マップ点は &lt;i&gt;(U&lt;sub&gt;i&lt;/sub&gt;, V&lt;sub&gt;i&lt;/sub&gt;)&lt;/i&gt; と表記でき、各マップ点は &lt;i&gt;i&lt;/i&gt; に関して独立であると仮定できる。そうすると &lt;i&gt;ID&lt;sub&gt;i&lt;/sub&gt; ≠ ID&lt;sub&gt;i&#39;&lt;/sub&gt;&lt;/i&gt; であれば、それらは独立であり共分散（相関）はゼロである。一方 &lt;i&gt;ID&lt;sub&gt;i&lt;/sub&gt; = ID&lt;sub&gt;i&#39;&lt;/sub&gt;&lt;/i&gt; であれば下記となる（ここで &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{min(a, b) = a \wedge b}&quot; /&gt;, &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{max(a, b) = a \vee b}&quot; /&gt; と表記している）。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{Cov(1_{i}, 1_{i&#39;}) = \mathbb{E} (1_{i}, 1_{i&#39;}) - \mathbb{E} (1_{i}) \mathbb{E} (1_{i&#39;}) = (s_{i} \wedge s_{i&#39;}) * (d_{i} \wedge d_{i&#39;}) - s_{i}s_{i&#39;}d_{i}d_{i&#39;}}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
（訳注：上式にて、Cov(x, y) = E(xy) - E(x)E(y) は公式というか E[ (x - E(x)) (y - E(y)) ] を地道に解けば良い。さて、異なるID 間は独立で同一 ID だと独立でないという議論に関して、これは正しいのか？どうもそう思えない。異なる ID 間で独立であると考えはサンプリング2軸マップで各 RPC が一様ランダムだからということを根拠としている。これまでの説明だと同一 ID を持つかどうかは単にマップ上の位置が近い、マップ上で限られた領域に位置するだけで、同一 ID を持つ RPC 間も一様ランダムとなる気がする。そうすると P(a) を確率変数 a の確率関数とすると P(xy) = P(x)P(y) であり、確率変数 x, y の取り得る値は 1 なので E(xy) = E(x)E(y) となる。結果、同一 ID の時も Cov(x, y) はゼロとなる。思うにサンプリング確率を使ったトレース ID の作り方、換言してトレース ID 内の RPC はサンプリング確率の2軸マップで位置が限定されることから、同じトレースの RPC 間ではサンプリング確率が連動してる気がする。ここで、適応型サンプリングでトラフィック量に応じてサンプリング確率が変動するとすると、RPC は P(s|T), P(s&#39;|T) となり、それぞれが独立かどうかは別の検証が必要だし、少なくとも &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\mathbb{E} (1_{i}, 1_{i&#39;}) = (s_{i} \wedge s_{i&#39;}) * (d_{i} \wedge d_{i&#39;})&quot; /&gt; ではないような。また、複数の分散パス連なりにて、後のパスのサンプリング確率は前のパスに依存するとしても &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\mathbb{E} (1_{i}, 1_{i&#39;}) = (s_{i} \wedge s_{i&#39;}) * (d_{i} \wedge d_{i&#39;})&quot; /&gt; はならない。だって、&lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\mathbb{E} (1_{i}, 1_{i&#39;}) = (s_{i} \wedge s_{i&#39;}) * (d_{i} \wedge d_{i&#39;})&quot; /&gt; は確率が小さい方が成立したら大きな方も成立するって論理で、その因果関係を示してない。なので、同一 ID で共分散が論文の式で表せれるということは納得できない。しかし、とりあえず同一 ID で共分散が論文の式で表せることができて、異なる ID 間では共分散がゼロとなるという前提で読んでみる。）&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;上記から母集団の分散共分散行列は同一トレース内の2要素間の交差項（訳注：&quot;cross term&quot; を従属変数に影響を与える2つの独立変数を乗した項である交差項と訳した。ここでは &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{x[j]_{i} * x[j]_{i&#39;}}&quot; /&gt; を指していると思われる。単なる2変数間の相関の意味に近いかと）に依存すると言えるので、2つの確率からなる係数 &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{(s_{i} \wedge s_{i&#39;}) * (d_{i} \wedge d_{i&#39;})}&quot; /&gt; により重み付けされるサンプルにより不偏推定値が得られる。&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;3.2 Covariance Estimation Algorithm and Complexity&lt;/h3&gt;アルゴリズム GetSigmaHat は &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\Sigma}}&quot; /&gt; を返す。詳細に、各トレース ID の ProcessSingleTrace 処理結果の総和を返す関数である（ここで外積は &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{x \otimes y}&quot; /&gt;）（訳注：ここで M は分散共分散行列で J は Ω の要素数、つまり非サンプリングを含めた監視期間の全要素値）。&lt;br /&gt;
&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Algorithm 1&lt;/b&gt; GetSigmaHat&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div&gt;M ← ゼロで初期化された J × J 行列&lt;br /&gt;
&lt;b&gt;for all&lt;/b&gt; &lt;i&gt;ID&lt;/i&gt; ∈ &lt;i&gt;S&lt;/i&gt; &lt;b&gt;do&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;i&gt;M+=ProcessSingleTrace(ID)&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;end for&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;return&lt;/b&gt; M&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
（訳注：要は &lt;i&gt;ProcessSingleTrace(ID)&lt;/i&gt; で各 ID にて生成される分散共分散行列を単純に総和する。総和していい理由は、共分散行列の各要素は正規化されてないし、トレース毎に各要素は独立であるため。）&lt;br /&gt;
&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Algorithm 2&lt;/b&gt; ProcessSingleTrace&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;与えられた ID にマッチする RPC 集合（ID なしで区別できるため &lt;i&gt;(s&lt;sub&gt;i&lt;/sub&gt;, d&lt;sub&gt;i&lt;/sub&gt;, x&lt;sub&gt;i&lt;/sub&gt;)&lt;/i&gt; で表記）において、ユニークなタプル (s, d) を持つ RPC のみ収集し &lt;i&gt;(s&lt;sub&gt;k&lt;/sub&gt;, d&lt;sub&gt;k&lt;/sub&gt;, y&lt;sub&gt;k&lt;/sub&gt;)&lt;/i&gt; を得る。ここで &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{y_{k} = \sum_{\left\{ j|(s_{j}, d_{j})=(s_{k}, d_{k}) \right\}}x_{j}}&quot; /&gt;, つまり 指定するユニークタプル (s, d) を満たす RPC サブ集合にて x&lt;sub&gt;i&lt;/sub&gt; をまとめてベクトル y&lt;sub&gt;k&lt;/sub&gt; を求めてグループ化（再パラメータ化）する（訳注：なのでここでの Σ 演算は加算の意味でなくベクトル化するという意味で使用）。また K&lt;sub&gt;t&lt;/sub&gt; は あるトレース ID 内の異なる &lt;i&gt;(s&lt;sub&gt;k&lt;/sub&gt;, d&lt;sub&gt;k&lt;/sub&gt;)&lt;/i&gt; を持つ RPC の総数とする。&lt;br /&gt;
&lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div&gt;M ← ゼロで初期化された J × J 行列&lt;br /&gt;
&lt;b&gt;for all&lt;/b&gt; &lt;i&gt;k&lt;/i&gt; ∈ &lt;i&gt;1:K&lt;sub&gt;t&lt;/sub&gt;&lt;/i&gt; &lt;b&gt;do&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;for all&lt;/b&gt; &lt;i&gt;k&#39;&lt;/i&gt; ∈ &lt;i&gt;1:K&lt;sub&gt;t&lt;/sub&gt;&lt;/i&gt; &lt;b&gt;do&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img src=&quot;http://www.codecogs.com/eq.latex?w = \frac{1-max \left( s_{k}, s_{k&#39;} \right)*max \left( d_{k}, d_{k&#39;} \right)}{s_{k}s_{k&#39;}d_{k}d_{k&#39;}}&quot; /&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img src=&quot;http://www.codecogs.com/eq.latex?M+= w* \left( y_{k} \otimes y_{k&#39;} \right)&quot; /&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;end for&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;end for&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;return&lt;/b&gt; M&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
（訳注：要は 1トレース内でサンプリング確率とダウンサンプリング確率をキーに得られる複数の RPC をベクトルとして再グループ化する。そして、新たにできた RPC&#39; 間の相関を取るんだけど、その際サンプリング確率とダウンサンプリング確率による重み付けをして分散共分散行列を作る。ここで重み w は Cov(1, 1) と &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\frac{1}{s_{k}d_{k}}}&quot; /&gt; をまとめた &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{Cov \left( \frac{1_{k}}{s_{k}d_{k}}, \frac{1_{k&#39;}}{s_{k&#39;}d_{k&#39;}} \right)}&quot; /&gt;であり、その導出方法は Appendix に記載される。）&lt;br /&gt;
&lt;br /&gt;
トレース内には多くの RPC が含まれるが、同じ (s, d) のタプルを持つ RPC を集約して再パラメータ化することで要素数は減少する。実際、我々が収集した全てのトレースに関して、再パラメータ化した RPC（訳注：以下、結合 RPC とする） はトレース内に20未満しかない。&lt;i&gt;N&lt;sub&gt;t&lt;/sub&gt;&lt;/i&gt; をトレース内の RPC 数、&lt;i&gt;M&lt;sub&gt;t&lt;/sub&gt;&lt;/i&gt; をトレース内の結合 RPC 数とすると、ProcessSingleTrace 前処理と ProcessSingleTrace 1処理では &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{N_{t} log(M_{t}) + M_{t}^{2} * J^{2}}&quot; /&gt; のオーダーの計算量となる（訳注：N&lt;sub&gt;t&lt;/sub&gt;log(M&lt;sub&gt;t&lt;/sub&gt;) は RPC を結合 RPC へと再パラメータ化するための計算量で M&lt;sub&gt;t&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt; * J&lt;sup&gt;2&lt;/sup&gt; は分散共分散行列の導出にかかる計算量かと。結合 RPC 作成にかかる計算量にて log(M&lt;sub&gt;t&lt;/sub&gt;) としているのはそのくらいに圧縮できるとの想定か実測によるものと思われる）。これは &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{N_{t}^{2} * J^{2}}&quot; /&gt; より高速である。また（訳注：同一の名前を別の意味で使う点で紛らわしいが） M を全トレースで最大の M&lt;sub&gt;t&lt;/sub&gt; とし、T をトレース数とすると全トレースにわたる計算量は下式の通り（訳注：まぁ N = ΣN&lt;sub&gt;t&lt;/sub&gt; の書き漏らしとして、右辺の第一項は N*T*log(M) だと思うんだが）。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\begin{array}{ccc} \sum_{t} N_{t} log(M_{t}) + M^{2} * J^{2} &amp;amp; \leq &amp;amp; \left( \sum_{t} N_{t} \right) log(M) + T * M^{2} * J^{2} \\  &amp;amp; = &amp;amp; N log(M) + TM^{2} * J^{2} \end{array}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
実際に M の各要素は小さな値となるため、RPC 数やトレース数により線形にスケールした。さらに、GetSigmaHat はトレース ID でシャーディングすることで複数のマシンでの並列処理が可能であり、それぞれのマシンは J × J の推定分散共分散行列を出力する。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;4 Case Studies&lt;/h3&gt;&lt;h3 class=&quot;sectitle&quot;&gt;4.1 Bin Packing and Cross-Datacenter Reads&lt;/h3&gt;巨大なスケールな分散コンピューティング環境は何十ものデータセンター上に構成され、何千のアプリケーションを何万のユーザーが操作する。分散環境のストレージ構成はハードウェアのアップグレードと同じくらい急激に変化する。それはユーザー要求やアプリケーションの更新・進歩による。新しくストレージ容量が追加される時、例えば拡張されたデータセンターにディスクが追加された時、またデータセンターが新設された時、その新しいハードウェアによる恩恵が最大化するようにアプリケーションサービス、ユーザー、データの再配置を考慮しなければならない。&lt;br /&gt;
&lt;br /&gt;
アプリケーション、データ、ユーザーをデータセンターにビンパックするオプティマイザは、多くのリソースからの情報を使って、いくつかのパラメータに関して成長率を予測し、様々な制約を満足するよう試みるだろう（訳注：&quot;bin-packing&quot; はそのままビンパックとした。要はデータセンターでのアプリ、データ、ユーザーの再配置は NP 困難問題であるということ、&quot;bin-pack&quot; はデータを最適に配置する、&quot;pack&quot; は単にデータを配置するという動詞として使っている）。そのような最適化では、パッキングの結果のデータ配置の結果生じるデータセンターまたがりのデータ参照数を制御する。これをシミュレーションする場合、ユーザとアプリケーションのペアを完全に記録することが求められる。しかし、ユーザとアプリケーションのペアは100万程度あるため、それぞれのトラフィックを完全に記録し保持することは極めて高コストである。よって、我々はそれぞれによるデータセンターまたぎのトラフィックを評価するために Dapper によりサンプリングされた RPC トレースを代わりに利用する。&lt;br /&gt;
&lt;br /&gt;
我々の提案の実用性を示すために、過去集められたサンプルを使った複数のポリシ（戦略）を比較する。そのため、近距離にある3つのデータセンタでのユーザデータのビンパッキングを取り上げる。ファイルやストレージ割り当てに関して多くの研究がある [6, 2, 3]。我々は本論文で現時点で最適もしくは有益なビンパッキングの戦略を提案したいのではない。ここでは単にデータセンタまたがりのデータ参照数を観点に、複数の戦略間の相対的な有益性を評価できることを強く訴求したい。&lt;br /&gt;
&lt;br /&gt;
ストレージシステムにおけるデータは、我々がオーナーと呼ぶユーザーにより作成、更新される。そのデータはオーナーもしくは多くの他のユーザーにより読み出される。我々は2つの戦略を用いてデータをパックする。但し、その前提条件として、各オーナーは一つのデータセンターのみにアクセスするものとする（訳注：下記2つの戦略は異なるものの、各ユーザーはオーナーとしていづれかのデータセンターに割り当てられる。それぞれのユーザーは他のユーザーのデータを参照するために、割り当てられたデータセンターを経由して（一部は同じデータセンター内のローカルデータかもだが）別のデータセンターにアクセスする。という前提において、データセンターまたぎのデータ参照数をビンパック戦略の評価基準とする）。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;戦略 1: 基本戦略&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
3つのセル（訳注：この &quot;cell&quot; はデータセンターもしくは各データセンターのストレージと同義）のスナップショットを取り、それらへのユーザー利用分を加算することで各ユーザーの総容量や利用率が明らかとなる。そして我々はアルファベット順に各オーナーをデータセンターに割り当てる。それゆえ、各データセンターには均等に総データの1/3が格納される。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;戦略 2: 交差戦略&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
この戦略では、第一のセル（訳注：ここでの「第一」は便宜上のもの、3データセンターのいづれか一つ）へデータセンター間にまたがるユーザートラフィックの多くを流すことを試みるシンプルなポリシーを採用する。ここで「2ユーザー間の近接性」を、ユーザーが互いのデータをデータセンターまたぎに参照する推定数を分子とし、2ユーザーの合計データ容量を分母とする値と定義する。この戦略では、高い近接性を持つオーナーペアを第一のセルに割り当てる（訳注：つまり2オーナーのデータがオーナー間で良く転送される場合、それらデータは同じデータセンターに割り当てられる。なお、一方のユーザがペアオーナーのデータに良く参照するという、非対称な場合もこれに含まれる）。但し、この第一のセルへの割り当ては2ユーザー総データの 1/3 に達するまでで、それ以降は次のセルへと移動する。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;4.1.1 Results&lt;/h3&gt;我々は上記2つの戦略をデータセンターシミュレーション（3データセンター）に適用し、データセンター間のデータトラフィックを比較した。なお、それぞれのデータセンターは1000以上のユーザーに属する数十 PB のデータを格納している。我々は2012年5月6日から5月12日までに収集されたデータにより crossterm 戦略のポリシーを学習し（訳注：以降 crossterm は戦略2を指している。また、学習して得られるのは誰と誰がペアかということ、そのペアをアサインすべきデータセンターはどこかということ）、3月25日から6月5日の期間のデータを使って評価した。crossterm 戦略を採用した場合のこの期間データは、ユーザー A のデータを格納したデータセンターにユーザー A は接続し読み出すはずである（訳注：すごくわかりづらいが、あくまでシミュレーションをしているだけで、この期間に本当にデータを再配置しているわけではない。つまり、実際には2つの戦略を適用せずに、何かしらの最高にクールな Google 様ビンパッキングアルゴリズムが走っていて、それでも発生するデータ参照要求 RPC をサンプリングして、各サンプリング RPC に関して、それぞれの戦略だったらこの RPC が発生したかどうかを検証して、それぞれの戦略でカウントアップする。さて、これは実験環境として妥当か？検証期間にその別の戦略による計画が走ってデータの再配置は起きていないのか？最高にクールな Google 様アルゴリズムがおバカで、バンバンと RPC が出まくっているならまだしも、例えばペア程度でなく、多数のユーザーグループを考慮したり、RPC を発生させるより、データキャッシュした方が低コストな場合はそうする、といった良い戦略だと発生する RPC は少ないので、標本として妥当かどうか。また、別の戦略による RPC なので、ここで扱う2つの戦略に合わない RPC も出てくるのではないかと思う）。また、収集期間において Dapper は数百万の RPC を収集し、そのサンプリング確率は最小で 5e&lt;sup&gt;-7&lt;/sup&gt; となるような範囲である（かなり小さい）。&lt;br /&gt;
&lt;br /&gt;
データセンターまたぎのデータ参照に関して、2つの戦略の適用結果間に重要な差異があるかどうかを検証するために、我々は2つの戦略の評価結果間の差に着目し、その差の周辺 95% を信頼区間とした（訳注：評価の実際の値は誤差が含まれているかもしれないので、その値の前後（左右でも上下でも）それぞれ 47.5% の区間内に真の値が入っているだろうという定義。ここで信頼区間の大きさを示すパーセント値は、前章から平均が &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\theta}&quot; /&gt; 、分散が &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\Sigma}}&quot; /&gt; の正規分布における平均から左右両方に取る領域の面積がパーセント値となる時の境界となる確率変数の絶対値を導出するために使われる。信頼水準が 95％ の場合、分布の平均から 47.5% となる確率変数の値が、評価結果の前後について信頼区間となる）。なお、この区間がゼロ交差しない時に、戦略間で差異がないとする帰無仮説を棄却できることになる（訳注：信頼区間がゼロ交差するとは、信頼区間が0を含むということで、戦略間での差が0であるかもしれないということ。なので、帰無仮説を「2つの戦略間で差がない」とすると、ゼロ交差する時は帰無仮説が指示されることになる）（ここで、それぞれの戦略が引き起こすであろうデータセンターまたぎのデータ参照の RPC かどうかを示すブーリアン値からなる2次のベクトルを 関数 &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{f : \lambda \longrightarrow x}&quot; /&gt; を使って代入する（訳注：別の戦略により実際に発生している RPC が2つの戦略だと発生するかしないかを指示する0/1の値のベクトルで、例えば戦略1の b&lt;sub&gt;1&lt;/sub&gt; と 戦略2の b&lt;sub&gt;2&lt;/sub&gt; からなるベクトル [ b&lt;sub&gt;1&lt;/sub&gt;, b&lt;sub&gt;2&lt;/sub&gt; ]）。2戦略間の差異は &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\theta}_{1} - \hat{\theta}_{2}}&quot; /&gt; として評価され、対応する分散推定値は &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\Sigma}_{1,1} + \hat{\Sigma}_{2,2} - 2\hat{\Sigma}_{1,2}}&quot; /&gt; となる。&lt;br /&gt;
（訳注：&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?Cov \left( \hat{\theta}_{1} - \hat{\theta}_{2}}, \hat{\theta}_{1} - \hat{\theta}_{2}} \right) = E \left[ \left( \left( \hat{\theta}_{1} - \hat{\theta}_{2}} \right) - E \left[ \hat{\theta}_{1} - \hat{\theta}_{2}} \right] \right)^2 \right] &quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?= E \left[ \left( \left( \hat{\theta}_{1} - E \left[ \hat{\theta}_{1} \right] \right) - \left( \hat{\theta}_{2} - E \left[ \hat{\theta}_{2} \right] \right) \right)^2 \right]&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?= E \left[ \left( \hat{\theta}_{1} - E \left[ \hat{\theta}_{1} \right] \right)^2 + \left( \hat{\theta}_{2} - E \left[ \hat{\theta}_{2} \right] \right)^2 - 2 \left( \hat{\theta}_{1} - E \left[ \hat{\theta}_{1} \right] \right) \left( \hat{\theta}_{2} - E \left[ \hat{\theta}_{2} \right] \right) \right]&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?= E \left[ \left( \hat{\theta}_{1} - E \left[ \hat{\theta}_{1} \right] \right) \right] + E \left[ \left( \hat{\theta}_{2} - E \left[ \hat{\theta}_{2} \right] \right) \right] - 2E \left[  \left( \hat{\theta}_{1} - E \left[ \hat{\theta}_{1} \right] \right) \left( \hat{\theta}_{2} - E \left[ \hat{\theta}_{2} \right] \right) \right]&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?= \hat{\Sigma}_{1,1} + \hat{\Sigma}_{2,2} - 2\hat{\Sigma}_{1,2}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
））。&lt;br /&gt;
&lt;br /&gt;
2つの戦略それぞれで、日毎のデータセンターまたぎのデータ参照数に関する評価結果を得た。異常なサンプルによる（訳追加：過学習などの）戦略ポリシー更新の失敗という脆弱性を隠すために、本論文では「2つの戦略が同じくらいのデータセンターまたぎのデータ参照を発生させる」と定義した帰無仮説を棄却できるかどうかに着目し検証した。図2は評価結果を示している。ここで Y 軸は全検証期間に渡って基本戦略の平均でスケール（割り算）して正規化している。Crossterm 戦略は全ての日で基本戦略を上回り、大体20%程良いという結果を得ており、帰無仮説は棄却された。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1C_hxmvaXWxRrfrVaC7eFIljnZbBAsXoI-XamzEmkFUQ_TmtKOlIo_r0fXTPMRao3DRgpJF0TB_2yoRVw-WgwE4xBxke4MUqaTgNqSM7uZqJlwQWYdJ_oz4_GaHXyA6fZk94zQweErPet/s1600/EstimateCrossDC.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;183&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1C_hxmvaXWxRrfrVaC7eFIljnZbBAsXoI-XamzEmkFUQ_TmtKOlIo_r0fXTPMRao3DRgpJF0TB_2yoRVw-WgwE4xBxke4MUqaTgNqSM7uZqJlwQWYdJ_oz4_GaHXyA6fZk94zQweErPet/s320/EstimateCrossDC.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図2 データセンターまたぎのデータ参照数の戦略による差異。グラフ内のプラス/マイナス幅は標準誤差による（訳注：＝信頼区間）。Y 軸は基本戦略の平均で crossterm 戦略の結果を正規化したもの&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;4.2 Change Point Detection（この節から文章の書き方が明らかに異なり読みづらく訳し間違いあるかもです）&lt;/h3&gt;システム振る舞いの突発な変化や、（訳追加：デルタ関数やインパルス関数のような）スパイクするユーザーレスポンスを検知するのには監視ツールが有効である。監視の結果、リソースの追加や突発な変化の原因追跡といった対策が実行される。本論文では、特定サービスのデータアクセスに関するディスクシーク数を監視し、間接的に突然のワークロード変更に伴うキャッシュミス数増加を検知したいとする（訳注：ここでのキャッシュとはあるデータセンターが持つ他のデータセンターのキャッシュであり、ディスクシークとは他データセンターへの RPC を使って要求するディスクアクセスのこと。なので、他データセンターへのディスクシーク RPC が発行されるということは、要求元のデータセンターにキャッシュがなくキャッシュミスが起きているということ）。現行のロギングが有効なシステムであっても、我々が必要とする粒度で直接的にサービス毎のキャッシュミス率を検知できなかった。しかし Dapper のトレースを使ってキャッシュミス率を推定できた。これは我々が真に検知したいのが実際の変化であり、また不確実性サンプリングによっては偽陽性がほとんど発生しないと仮定しているためである（訳注：&quot;real changes&quot; を「実際の変化」としている。多分現行のロギングシステムだと、ファイルシステムが Google File System GFS だからかは不明だが、ローカルもリモートも関係なくキャッシュミスを報告するんだろう。一方、本論文の定義するキャッシュミスは＝実際にディスクシーク要求が RPC として他データセンターへ送信される、である。それゆえ、現行のロギングシステムだと偽陽性がありまくることになる。また &quot;sampling uncertainty&quot; は不確実性サンプリングとした。不確実性サンプリングによっては偽陽性がほとんど発生しないとは、上の訳注の逆はないということ。言い換えて、RPC のサンプリングにばらつきがあってもローカルキャッシュミスにはならないということ）。&lt;br /&gt;
&lt;br /&gt;
最近では、複数の変数間の相対的な変化の差が、まったくゼロでない（有意にゼロから異なる）場合にだけ検知する方法が採られる。このアプローチの問題は高いサンプリング確率を設定した場合に（訳追加：わずかな差も漏れなくサンプリングしてしまうため）、わずかな差もゼロではないので重大なものとして検知される。そこで、我々は日毎の本当のばらつきを検知するために、シーク数の増加が10%未満であるということを帰無仮説として検定することとした。&lt;br /&gt;
&lt;br /&gt;
具体的に μ&lt;sub&gt;t&lt;/sub&gt; を特定日 t のシーク数、&lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\mu}}&quot; /&gt; を特定日 t の推定シーク数（&lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{f : \lambda \longrightarrow x}&quot; /&gt; にて、操作対象の RPC が検証対象のパーティションに対するディスクシークであるかどうかを示すバイナリ値を代入する。この例ではベクトルでない）として、また帰無仮説と検定のための z スコアを下記の通りとする（訳注：帰無仮説 H&lt;sub&gt;0&lt;/sub&gt; は時刻 t-1 のディスクシークに関する RPC 数に対して時刻 t のそれが1.1倍より大きければ棄却（有意差あり）となる。z スコア一般に &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\frac{\bar{x} - \mu}{\frac{\sigma}{\sqrt{n}}}}&quot; /&gt; （&lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\bar{x}}&quot; /&gt; は標本の平均、&lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\mu}&quot; /&gt; は母集団の平均、&lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\sigma}&quot; /&gt; は母集団の標準偏差、n は標本サイズを示す）で表されるが、これは元々標本の平均と母集団の平均に有意な差があるかどうかという目的からきている。ここでは &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\mu}_{t}}&quot; /&gt; と &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\mu}_{t-1}}&quot; /&gt; の間で有意な差があるかどうかの検定なので z スコアは下記のようになる。なお、標準偏差は V[(μ&lt;sub&gt;t&lt;/sub&gt; - E(μ&lt;sub&gt;t&lt;/sub&gt;))(μ&lt;sub&gt;t-1&lt;/sub&gt; - E(μ&lt;sub&gt;t-1&lt;/sub&gt;))]を展開してるだけで、時刻 t と t-1 の標本間は独立である（共分散がゼロである）という前提。また &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\sigma}_{t}}&quot; /&gt;, &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\hat{\sigma}_{t-1}}&quot; /&gt;,  &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{n_{t}}&quot; /&gt;, &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{n_{t-1}}&quot; /&gt; はそれぞれ時刻 t, t-1 の標本の標準偏差、標本数である。おそらく論文記載の z スコアの分散が標本数で割られてないのは誤記。後述のように 95% の信頼水準の z 値として標準正規分布表から  z = 1.64 と持ってきているため。標本数で割れれてないと正規化されてないことになり、この値では検定できない。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?z = \frac{\hat{\mu}_{t} - 1.1 \hat{\mu}_{t-1}}{\sigma_{\hat{\mu}_{t} - 1.1 \hat{\mu}_{t-1}}^2}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?= \frac{\hat{\mu}_{t} - \hat{\mu}_{t-1}}{\sqrt{\frac{\hat{\sigma}_{\hat{\mu}_{t}}^2}{n_{t}} + 1.1 \frac{\hat{\sigma}_{\hat{\mu}_{t-1}}^2}{n_{t-1}}}}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
）。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?H_{0} : \frac{\mu_{t}}{\mu_{t-1}} \leq 1.1&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?z = \left( \hat{\mu}_{t} - 1.1\hat{\mu}_{t-1} \right) * \left( \hat{\sigma}_{t}^{2} + 1.1^{2}\hat{\sigma}_{t-1}^{2} \right)^{-\frac{1}{2}}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
ここでは（訳追加：有意差が10%以上かという片側だけなので）片側検定として z &amp;gt; 1.64 の時に帰無仮説 H&lt;sub&gt;0&lt;/sub&gt; は棄却される（訳注：全く説明がないが1.64は 95% 信頼水準で片側検定の場合の標準正規分布表の z 値）。この検定では &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\frac{\mu_{t}}{\mu_{t-1}} = 1.1}&quot; /&gt; の時に水準が0.05であり（ここで深夜にまたがり次の日にまでデータアクセスが及ぶようなレアなトレースを例外とすることで（訳追加：時刻 t, t-1 それぞれの標本に関して）独立性を得る）、&lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{\frac{\mu_{t}}{\mu_{t-1}} &amp;lt; 1.1}&quot; /&gt; の時に帰無仮説が成立となる。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;4.2.1 Results&lt;/h3&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgokUwoVei5B2S_TnlxbgzzaVY4lq_ia20z-QwwVnVKEu1VbH5zFSwNaMlryl-25mvniDzYbps_vxDTRJ_6ln-rcPYiqjOMbVkMyKCA8-BjGZl9QUYSA9Fy6CwbQXDu9Z0Ucklo39aZJAao/s1600/Fig3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;214&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgokUwoVei5B2S_TnlxbgzzaVY4lq_ia20z-QwwVnVKEu1VbH5zFSwNaMlryl-25mvniDzYbps_vxDTRJ_6ln-rcPYiqjOMbVkMyKCA8-BjGZl9QUYSA9Fy6CwbQXDu9Z0Ucklo39aZJAao/s320/Fig3.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図3 青点線は特定パーティションのデータアクセスでのキャッシュミスを示し、最初の日のの値を1として正規化している。赤点線は10％未満ほどシーク数が増加するという仮説検定に対応する z スコアであり、赤線は帰無仮説の棄却境界を示す&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc-laNnfoBa7D_wdc278hlUuLGVQmJiCB764tz22DQPCeRJdmV3lVVvX3VAWPISadzwzeYV4cstZcpd-afPs7Fj4Eo8QB4rVnx28v70drZM-L3dkTyxvTgRykEDX0zczjyH7kRjDk1IqiY/s1600/Fig4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;213&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc-laNnfoBa7D_wdc278hlUuLGVQmJiCB764tz22DQPCeRJdmV3lVVvX3VAWPISadzwzeYV4cstZcpd-afPs7Fj4Eo8QB4rVnx28v70drZM-L3dkTyxvTgRykEDX0zczjyH7kRjDk1IqiY/s320/Fig4.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図4 図3と異なる対象のデータパーティションに対するキャッシュミス数と対応する z スコア&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
図3及び4において、青点線は最初の日の値により正規化されたデータアクセス数を示し（訳注：図説明にはキャッシュミスしたデータアクセス数とある。データ（ランダム）アクセス数が増加すればキャッシュミスも増加するのでいいのかもだけど、まぁキャッシュミス数なのだろう）、赤点線は前日からの変分に関する z スコアを示し10%より少ない増加かどうかの検定に用いられる。水平な赤実線は（訳追加：z スコアの1.64を示し）水準が0.05の正規検定に対応する。グラフにて線分の上かどうかを確認することで仮説検定ができる。&lt;br /&gt;
&lt;br /&gt;
図3にて、6月30日にキャッシュミスが増加し、7月1〜3日にかけて6月末と比較して100倍ほど高くなっていたことがわかる。z スコアを用いた検知によると、6月30日から7月1日の間の値で上記の変化を検出できている。7月以降はキャッシュミス数が100倍以上で変化なく推移しているために1日のみの変化である。&lt;br /&gt;
&lt;br /&gt;
図4によると、別のパーティションに関して、7月3日だけ他の日より100倍高いキャッシュミスが発生しており、スパイクな変化があった。しかし、7月3日の z スコアは変化しておらず、検知されなかったように、この検定は高い不確実性を持つ。ここで、図3との違いは高いキャッシュミスが持続しなかったことである。データパーティションへのアクセスの直接の観測では次の日には消えてしまうようなスパイクといった実際の状況を観測でき、そしてそれは有用である場合もあるだろう。しかし、キャッシュミスの変動を詳しく調査した結果、図4のスパイクが原因ではなく、サンプリングの変動による可能性が高いことが判明した（訳注：これはかなり意訳。とにかくキャッシュミス計測のサンプリングと z スコア導出データのサンプリングがズレて、正しい z スコアが計算できなかったということかと）。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;5 Conclusion&lt;/h3&gt;多くの興味深いシステムのメトリック量は RPC 上のベクトル関数の和（訳追加：ここでは &quot;vector-valued function&quot; をベクトル関数と訳した。要はベクトル関数は X(t) = { x&lt;sub&gt;i&lt;/sub&gt;(t), x&lt;sub&gt;j&lt;/sub&gt;(t), ..., x&lt;sub&gt;n&lt;/sub&gt;(t) } であり、ベクトル関数の和は ΣX(t) のこと）として表現できる。我々はシステム量の推定値及び Google Dapper から得られる推定値の不確実性を獲得する方法を提案した。分散システムでサンプリングされたトレースはシステム上で偏在し、しばしば生じるシステム状態への原因追跡に利用できる唯一のデータソースである。トレースは複雑なサンプリングの仕組みから生成されるものの、我々はあらゆるケースで動作し計算負荷も低い不偏共分散の推定値導出方法を明らかにした。また、提案手法の利用法を提示した。具体的に、Google データセンター上で複数のビンパッキング戦略の有効性を評価することで、直接にログ化されていないシステム量の変動点を検知した。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;A Appendix&lt;/h3&gt;&lt;br /&gt;
&lt;b&gt;Part 1: Notation and Aggregate Representation&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
計測期間の全 RPC （サンプリングしていない RPC を含む全てのやり取りされた RPC）の集団を Ω、それぞれの RPC を (i, j) の添字で表現するとする。i はトレース ID を j はトレース内の RPC のインデックスを示す。この時、システム集約量は下記のように表せる（訳注：ここで x は一つの RPC の変量でありスカラーな値）。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\theta = \sum_{i=1}^{N} \sum_{j=1}^{J_{i}} x_{(i, j)}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Dapper によりサンプリングされる RPC 標本を &lt;i&gt;S&lt;/i&gt; として &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{s_{(i, j)}}&quot; /&gt; と &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{d_{(i, j)}}&quot; /&gt; をそれぞれ &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{x_{(i, j)}}&quot; /&gt; のサーバサンプリング確率、ダウンサンプリング確率とする。この時、システム集約量の推定値は下記の通りである。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\hat{\theta} = \sum_{(i, j) \in S} \frac{x_{(i, j)}}{s_{(i, j)} * d_{(i, j)}}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
なお、(i, j) を同じサーバサンプリング確率とダウンサンプリング確率を持つ RPC で再パラメータ化しておくと何かと便利である。（訳追加：この時 s&lt;sub&gt;(i, j)&lt;/sub&gt;, d&lt;sub&gt;(i, j)&lt;/sub&gt; は下記のようにソートされているものとする。）&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?0 &amp;lt; s_{1} &amp;lt; s_{2}  &amp;lt; \cdots  &amp;lt; s_{M}  \leq 1&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?0 &amp;lt; d_{1} &amp;lt; d_{2}  &amp;lt; \cdots  &amp;lt; d_{L}  \leq 1&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
インデックスをセットし直す（サーバサンプリング確率とダウンサンプリング確率も指定できる添字とする。換言すると同じ確率を持つ RPC を区別する解像度がなくなる）。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\Omega_{i,m,l} = \{ (i&#39;, j&#39;) \in \Omega | i&#39; = i, s_{(i&#39;, j&#39;)} = s_{m}, d_{(i&#39;, j&#39;)} = d_{l} \}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
（サンプリングされていない（ゼロかもしれない）がここではそれを無視した）変量をまとめると下記の通り（訳注：y は単なる1次の加算結果ではなく加算対象の x を要素とするベクトルであることに注意。ここでの Σ 演算はベクトルの各要素をまとめることを意味している。また y はサンプリング確率に依存するスパースなベクトルとなる。換言して y は非サンプリングな要素はゼロとして Ω の個数の次元を持つ。これは他のトレースの y と次元数を合わせ、後の分散共分散行列の導出の際に全ての y を加算するため）。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?y_{(i,m,l)} = \sum_{ (i, j) \in \Omega_{(i, m, l)}} x_{(i, j)}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
また、重み付けされたブーリアンとして下記を定義する。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?W_{(i, m, l)} = \frac{1_{(i, m, l) \in S}}{s_{m} * d_{l}}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
ゆえに、システム集約量推定値は下記となる。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?T = \sum_{i=1}^{N} \sum_{m=1}^{M} \sum_{l=1}^{L} y_{(i, m, l)} W_{(i, m, l)}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Part 2: Population Covariance Matrix&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Cov(T) を拡張する前に下記は前提である（訳注：第一式は E(&lt;b&gt;1&lt;/b&gt;&lt;sub&gt;i&lt;/sub&gt;) がその定義から s&lt;sub&gt;i&lt;/sub&gt;d&lt;sub&gt;i&lt;/sub&gt; なので。第二式はトレース間は独立であるという前提をそのまま表現したもの）。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\mathbb{E} \left( W_{(i, m, l)}  \right) = 1&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?Cov \left( W_{(i, m, l)}, W_{(i&#39;, m&#39;, l&#39;)}  \right) = 0,\; If \; i \neq i&#39;&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{i = i&#39;}&quot; /&gt; の時に関して &lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{ \lambda_{m, l, m&#39;, l&#39;}}&quot; /&gt; を次の通りに定義する（訳注：第二項から第三項への導出の説明のために（）で囲った2式を追加しているので、元の第三、四項は第五、六式となっている。ここで論文の右辺の第二項までの詳細は本文を参照、なお第一項のPは同時確率を表現している。また第二項から第三項への変換は min, max の引数がサーバサンプリング確率とダウンサンプリング確率の2つであること、min(s,s)*min(d,d), max(s,s)*max(d,d) という同じ演算の掛け算であることを活かしている）。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?Cov \left( W_{(i, m, l)}, W_{(i&#39;, m&#39;, l&#39;)}  \right) = \frac{\mathbb{P} \left( (i, m, l), (i&#39;, m&#39;, l&#39;) \in S \right)}{s_{m}s_{m&#39;}d_{l}d_{l&#39;}} - 1&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex? = \frac{\left( s_{m} \wedge s_{m&#39;} \right) * \left( d_{l} \wedge d_{l&#39;} \right)}{s_{m}s_{m&#39;}d_{l}d_{l&#39;}} - 1&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\left( = \frac{\left( s_{m} \wedge s_{m&#39;} \right) * \left( d_{l} \wedge d_{l&#39;} \right) \left( s_{m} \vee s_{m&#39;} \right) * \left( d_{l} \vee d_{l&#39;} \right)}{s_{m}s_{m&#39;}d_{l}d_{l&#39;} \left( s_{m} \vee s_{m&#39;} \right) * \left( d_{l} \vee d_{l&#39;} \right)} - 1 \right)&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\left( = \frac{s_{m}s_{m&#39;}d_{l}d_{l&#39;}}{s_{m}s_{m&#39;}d_{l}d_{l&#39;} \left( s_{m} \vee s_{m&#39;} \right) * \left( d_{l} \vee d_{l&#39;} \right)} - 1 \right)&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex? = \frac{1 - \left( s_{m} \vee s_{m&#39;} \right) * \left( d_{l} \vee d_{l&#39;} \right)}{\left( s_{m} \vee s_{m&#39;} \right) * \left( d_{l} \vee d_{l&#39;} \right)}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex? \equiv \lambda_{m, l, m&#39;, l&#39;}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
以上より、下記が導出される。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?Cov \left( y_{(i, m, l)}W_{(i, m, l)}, y_{(i&#39;, m&#39;, l&#39;)}W_{(i&#39;, m&#39;, l&#39;)}  \right) = \left( y_{(i, m, l)} \otimes y_{(i&#39;, m&#39;, l&#39;)} \right) \lambda_{m, l, m&#39;, l&#39;}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
なお &lt;img src=&quot;http://www.codecogs.com/eq.latex?\otimes&quot; /&gt; は外積を示す（訳注：ここでは方向は無視して成分だけを利用する）。&lt;br /&gt;
&lt;br /&gt;
それゆえシステム集約量の分散共分散行列は次のようになる（訳注：ここでの Σ 演算はベクトルの加算として使われている。一つのトレースで求められる分散共分散行列は Ω の個数の次数を持つ正方行列だがその内部の各 RPC 間の共分散はほとんどゼロなスパースな行列である。また、トレース間は独立であるという前提なので、複数のトレースの分散共分散行列の非ゼロ要素は重ならない。なので加算しても影響はない）。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\Sigma = Cov \left( T \right) = \sum_{i} \sum_{(m, m&#39;, l, l&#39;)} \left( y_{(i, m, l)} \otimes y_{(i&#39;, m&#39;, l&#39;)} \right) \lambda_{m, l, m&#39;, l&#39;}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Part 3: Unbiased estimate of Σ&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\mathbb{E} \left[ \frac{1_{(i, m, l) \in S} 1_{(i&#39;, m&#39;, l&#39;) \in S}}{\left( s_{m} \wedge s_{m&#39;} \right) * \left( d_{l} \wedge d_{l&#39;} \right)} \right] = 1&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\left( \mathbb{E} \left[ \frac{1_{(i, m, l) \in S} 1_{(i&#39;, m&#39;, l&#39;) \in S}}{\left( s_{m} \wedge s_{m&#39;} \right) * \left( d_{l} \wedge d_{l&#39;} \right)} \right] = \frac{\mathbb{E} \left[ 1_{(i, m, l) \in S} 1_{(i&#39;, m&#39;, l&#39;) \in S} \right]}{\left( s_{m} \wedge s_{m&#39;} \right) * \left( d_{l} \wedge d_{l&#39;} \right)} =  \frac{\left( s_{m} \wedge s_{m&#39;} \right) * \left( d_{l} \wedge d_{l&#39;} \right)}{\left( s_{m} \wedge s_{m&#39;} \right) * \left( d_{l} \wedge d_{l&#39;} \right)} = 1 \right)&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
であることから（訳注：同時確率の期待値）、&lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{ y_{(i, m, l)} \otimes y_{(i&#39;, m&#39;, l&#39;)}}&quot; /&gt; 不偏推定値が下記で与えられる場合、&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\mathbb{E} \left[ \frac{ y_{(i, m, l)} \otimes y_{(i&#39;, m&#39;, l&#39;)} 1_{(i, m, l) \in S} 1_{(i&#39;, m&#39;, l&#39;) \in S}}{\left( s_{m} \wedge s_{m&#39;} \right) * \left( d_{l} \wedge d_{l&#39;} \right)} \right]&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Σの不偏推定値は下記のようになる（訳注：Σ の不偏推定値に対して上記と同じ確率変換をかけて、加算にかかる変数を揃えた）。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\hat{\Sigma} = \sum_{i \in S} \sum_{(m,m&#39;,l,l&#39;) \in S} \frac{\lambda_{(m,l,m&#39;,l&#39;)} \left( y_{(i, m, l)} \otimes y_{(i&#39;, m&#39;, l&#39;)} \right)}{\left( s_{m} \wedge s_{m&#39;} \right) * \left( d_{l} \wedge d_{l&#39;} \right)} \\ \;\;\;=  \sum_{(m,m&#39;,l,l&#39;) \in S} \frac{1 -  \left( s_{m} \vee s_{m&#39;} \right) * \left( d_{l} \vee d_{l&#39;} \right)}{s_{m}s_{m&#39;}d_{l}d_{l&#39;}} \sum_{i \in S} y_{(i, m, l)} \otimes y_{(i&#39;, m&#39;, l&#39;)}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
ProcessSingleTrace は単一のトレースに関して上記と同じ結果を返すので、上記は &lt;b&gt;GetSigmaHat と等価&lt;/b&gt; である。y をベクトルでなくスカラーとする、もしくはそれぞれのトレースでサーバサンプリング確率とダウンサンプリング確率を同じとする場合は上記の&lt;b&gt;シンプルなケース&lt;/b&gt;となる。&lt;img src=&quot;http://www.codecogs.com/eq.latex?\textstyle{p_{i} = s_{i} * d_{i}}&quot; /&gt; と置くと、結果は下記の通りシンプルになる。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\Sigma = \sigma^{2} = \sum_{i} \frac{1-p_{i}}{p_{i}}y_{i}^{2}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.codecogs.com/eq.latex?\hat{\Sigma} = \hat{\sigma}^{2} = \sum_{i \in S} \frac{1-p_{i}}{p_{i}^{2}}y_{i}^{2}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;References&lt;/h3&gt;[1] Available 20120720: http://engineering.twitter.com/2012/06/distributed-systems-tracing-with-zipkin.html.&lt;br /&gt;
[2] ALVAREZ, G. A., BOROWSKY, E., GO, S., ROMER, T. H., BECKER-SZENDY, R., GOLDING, R., MERCHANT, A., SPASOJEVIC, M., VEITCH, A., AND WILKES, J. Minerva: An automated resource provisioning tool for large-scale storage systems. ACM Trans. Comput. Syst. 19, 4 (Nov. 2001), 483–518.&lt;br /&gt;
[3] ANDERSON, E., SPENCE, S., SWAMINATHAN, R., KALLAHALLA, M., AND WANG, Q. Quickly ﬁnding near-optimal storage designs. ACM Trans. Comput. Syst. 23, 4 (Nov. 2005), 337–374.&lt;br /&gt;
[4] BARTH, W. Nagios: System and Network Monitoring. No StarchPress, San Francisco, CA, USA, 2006.&lt;br /&gt;
[5] BERTOLINO, A., CALABRO`, A., LONETTI, F., AND SABETTA, A. Glimpse: a generic and ﬂexible monitoring infrastructure. In Proceedings of the 13th European Workshop on Dependable Computing (New York, NY, USA, 2011), EWDC ’11, ACM, pp. 73–78.&lt;br /&gt;
[6] DOWDY, L. W., AND FOSTER, D. V. Comparative models of the ﬁle assignment problem. ACM Comput. Surv. 14, 2 (June 1982), 287–313.&lt;br /&gt;
[7] ERLINGSSON, U., PEINADO, M., PETER, S., AND BUDIU, M. Fay: extensible distributed tracing from kernels to clusters. In Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles (New York, NY, USA, 2011), SOSP ’11, ACM, pp. 311–326.&lt;br /&gt;
[8] SIGELMAN, B. H., BARROSO, L. A., BURROWS, M., STEPHENSON, P., PLAKAL, M., BEAVER, D., JASPAN, S., AND SHANBHAG, C. Dapper, a large-scale distributed systems tracing infrastructure. Tech. rep., Google, Inc., 2010.</content><link rel='replies' type='application/atom+xml' href='http://ceromondo.blogspot.com/feeds/7961713333523616852/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ceromondo.blogspot.com/2013/04/uncertainty-in-aggregate-estimates-from.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/7961713333523616852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/7961713333523616852'/><link rel='alternate' type='text/html' href='http://ceromondo.blogspot.com/2013/04/uncertainty-in-aggregate-estimates-from.html' title='Uncertainty in Aggregate Estimates from Sampled Distributed Traces'/><author><name>goemondo</name><uri>http://www.blogger.com/profile/17435609166287599853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBzzt2y_e87Gq_DyMOP7hLXjtzTK0S-UI-KcbukCTAe68exHWX3dwUwrXC1u6f0jRaJzF8-DbBz8Mxokx38sT-4s94c4VvJ2By6g6075v6WksNTNZsddzCT4p-IYM4Sg/s220/profile.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbXd2B_l_30sX47C202oHk0AIs-CLOJXR0ZkuhiD-3I7e2e0wDOAv54N6pAC0dmXlU7ojOsR4ewTXmwpiaphkPE-3x-tSyhaSVs5xBWgrjcjYgqAqcZouIs1B3a92n3sYNRxwdoTDRxbJT/s72-c/RelationshipBetweenTraceAndRPC.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7457791004653031882.post-8803558347490107229</id><published>2012-11-30T00:20:00.000+09:00</published><updated>2012-11-30T00:20:46.060+09:00</updated><title type='text'>生態学的視覚論 番外編 − Gibson の歩み的なものも少しまとめる</title><content type='html'>Gibson の歩みみたいなものを頭に入れた方が「包囲光配列」や「アフォーダンス」などの概念を理解し易いのかなと思い、歴史的なこともまとめてみた。ただ、この辺はWebを漁ればどんどん確認できるのでメモ程度として。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
ゲシュタルト&lt;/h3&gt;
Gibson の著書「&lt;a href=&quot;http://www.amazon.co.jp/gp/product/4781903932/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;amp;tag=goemondo-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=1211&amp;amp;creativeASIN=4781903932&quot;&gt;生態学的視覚論―ヒトの知覚世界を探る&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.jp/e/ir?t=goemondo-22&amp;amp;l=as2&amp;amp;o=9&amp;amp;a=4781903932&quot; style=&quot;border: none !important; margin: 0px !important;&quot; width=&quot;1&quot; /&gt;」等によると Gibson はゲシュタルト心理学の影響を強く受けていたようです。&lt;br /&gt;
ゲシュタルトとは何か。&lt;a href=&quot;http://ja.wikipedia.org/wiki/%E3%82%B2%E3%82%B7%E3%83%A5%E3%82%BF%E3%83%AB%E3%83%88%E5%BF%83%E7%90%86%E5%AD%A6&quot;&gt;Wikipedia による解説&lt;/a&gt;などを読んでもらうのが良いと思います。&lt;br /&gt;
下記は（何かしらのアウトプットをしないと頭に入らない）自分のためのメモ書きです。&lt;br /&gt;
&lt;br /&gt;
聴覚に関して&quot;音&quot;を一つの感覚要素とすると、我々はその要素の連続である音のつながりを「メロディ」として知覚する。&lt;br /&gt;
同様のことは視覚にも言え、最近は見ないけど工事現場で一定の距離を持つ豆電球の列が埋め込まれたコードを思い出してください。偶数番目の電球と奇数番目の電球が交互に点滅をするコードのこと。&lt;br /&gt;
点滅周期が一定速度以上のものだと、光が移動しているように見える。つまり光の点滅でなく、光の移動として捉える。&lt;br /&gt;
言い換えると、人間は各点滅を感覚要素とすると、その要素の連続的な点滅を一つの感覚要素として捉える。&lt;br /&gt;
このように、我々は一つ一つの間隔要素を知覚することも出来るし、複数の要素が集合した総体をも一つ要素として知覚する。この「複数の要素が集合した総体」をゲシュタルトと言う。&lt;br /&gt;
なお、要素の連続によって引き起こされる仮想の運動を知覚する現象はベータ運動と呼ばれる。それで、ベータ運動において、滑らかにじれったさがなく運動しているように見える状態をファイ現象と呼ぶ。ヴェルトハイマーによると（要素間の幅なども影響すると思うけど）約60msで要素が動くと滑らかな移動、つまりファイ現象と感じるらしい。&lt;br /&gt;
&lt;br /&gt;
このように、あるモノの知覚はその（最小の）構成要素に分解しても意味がない場合があり、全体的に把握しなければならないと主張したのがゲシュタルト心理学である。その全体的性質を「総体」と呼ぶ。あれです、知覚の話ではないですがCPUはCPUだけど、その他メモリとかと組み合わせることでコンピュータとして意味を持つ、みたいな。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
従来の人工知能&lt;/h3&gt;
人工知能における従来の主流な基本構造は、人工知能が対象としている環境から必要なだけを取得するセンサと、そのセンサから得られた情報を元に推定・推論し、結果を導出するもしくは行動内容を決定する推論エンジンと、その推論エンジンの出力を環境に対して実行するアクチュエータの3つのモジュールにより構成される。&lt;br /&gt;
例えばチェスゲームのコンピュータ役は、チェスボードの駒の位置を入力し、最適な次の一手を推論し、その一手を返す構造となる。&lt;br /&gt;
また、画像認識ではカメラモジュールから得られる画像データに対して、エッジを検出し、エッジにより分割可能な複数の多角形に分割する。抽出した各多角形をデータベースに照合し、マッチした場合、その照合対象データに紐付けられるコンテキストから、多面体が何であるかを判定する。&lt;br /&gt;
&lt;br /&gt;
人工知能や認識技術がこのような構造を取るようになったのはデカルトの視覚理論にあると言われる。デカルトは実験により目の網膜像説を提唱した。具体的に、環境の光刺激を受け網膜に像が形成され、網膜像化した（刺激に反応した）神経は光刺激を電気信号に変換、視神経を経由して脳に転送され、V1野からV4野を経由するうちに、対象が認識されるという説。&lt;br /&gt;
&lt;br /&gt;
さて、この構造で問題なるのはフレーム問題（関係性の有無の判断、どうでもいい情報のシャットアウトができない）や中国語の部屋（実際、中身は何も分かってないよね、パターン学習してるだけだけどそれって知能？）などがある。</content><link rel='replies' type='application/atom+xml' href='http://ceromondo.blogspot.com/feeds/8803558347490107229/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ceromondo.blogspot.com/2012/11/gibson.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/8803558347490107229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/8803558347490107229'/><link rel='alternate' type='text/html' href='http://ceromondo.blogspot.com/2012/11/gibson.html' title='生態学的視覚論 番外編 − Gibson の歩み的なものも少しまとめる'/><author><name>goemondo</name><uri>http://www.blogger.com/profile/17435609166287599853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBzzt2y_e87Gq_DyMOP7hLXjtzTK0S-UI-KcbukCTAe68exHWX3dwUwrXC1u6f0jRaJzF8-DbBz8Mxokx38sT-4s94c4VvJ2By6g6075v6WksNTNZsddzCT4p-IYM4Sg/s220/profile.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7457791004653031882.post-1541299494148142290</id><published>2012-11-29T22:42:00.003+09:00</published><updated>2012-12-09T22:58:17.553+09:00</updated><title type='text'>生態学的視覚論 Vol. 1 − 全体像</title><content type='html'>このポストから何回かに分けて J.J. Gibson の「生態光学」をまとめてみる。なお、このポストを投稿するにあたりいろんな文献を参考にしたが、特に「&lt;a href=&quot;http://www.amazon.co.jp/gp/product/4781903932/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;amp;tag=goemondo-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=1211&amp;amp;creativeASIN=4781903932&quot;&gt;生態学的視覚論―ヒトの知覚世界を探る&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.jp/e/ir?t=goemondo-22&amp;amp;l=as2&amp;amp;o=9&amp;amp;a=4781903932&quot; style=&quot;border: none !important; margin: 0px !important;&quot; width=&quot;1&quot; /&gt;」や「&lt;a href=&quot;http://www.amazon.co.jp/gp/product/4000065122/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;amp;tag=goemondo-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=1211&amp;amp;creativeASIN=4000065122&quot;&gt;アフォーダンス-新しい認知の理論 (岩波科学ライブラリー (12))&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.jp/e/ir?t=goemondo-22&amp;amp;l=as2&amp;amp;o=9&amp;amp;a=4000065122&quot; style=&quot;border-bottom-style: none !important; border-color: initial !important; border-left-style: none !important; border-right-style: none !important; border-top-style: none !important; border-width: initial !important; margin-bottom: 0px !important; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important;&quot; width=&quot;1&quot; /&gt;」を参考にした。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;いろいろと訳のわからないことを突然言われても&lt;/h3&gt;人間分からないもの。&lt;br /&gt;
何に使えるの？、他理論との相対的な違いは？って疑問を無視して数学の公式を暗記して、このパターンならこの公式を使えば良いのです、と上から目線で言われて学習したけど、大人になったらまったく知識化されてなくて愕然とする。&lt;br /&gt;
自分の専門でないためか、既存の概念で想像しづらい分野であるためか、生態学的視覚論を読んだところ、正直なかなか理解が進まず、上記のような状態になった自分がいました。&lt;br /&gt;
なので、そんなことにならないように、簡単に生態学的視覚論の目的、課題、その課題に対して採用したアプローチ、理論の位置付けくらいは述べて、詳細化してみる。&lt;br /&gt;
ちなみに、上の暗記学習例ってまさに「中国語の部屋」ですね。余談だけど、この観点から従来の人工知能研究は誤っているという論がありますが、個人的に脳の働きは「中国語の部屋」と同等だと思っています。&lt;br /&gt;
「&lt;a href=&quot;http://www.amazon.co.jp/gp/product/4781903932/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;amp;tag=goemondo-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=1211&amp;amp;creativeASIN=4781903932&quot;&gt;生態学的視覚論―ヒトの知覚世界を探る&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.jp/e/ir?t=goemondo-22&amp;amp;l=as2&amp;amp;o=9&amp;amp;a=4781903932&quot; style=&quot;border: none !important; margin: 0px !important;&quot; width=&quot;1&quot; /&gt;」や「&lt;a href=&quot;http://www.amazon.co.jp/gp/product/4000065122/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;amp;tag=goemondo-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=1211&amp;amp;creativeASIN=4000065122&quot;&gt;アフォーダンス-新しい認知の理論 (岩波科学ライブラリー (12))&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.jp/e/ir?t=goemondo-22&amp;amp;l=as2&amp;amp;o=9&amp;amp;a=4000065122&quot; style=&quot;border-bottom-style: none !important; border-color: initial !important; border-left-style: none !important; border-right-style: none !important; border-top-style: none !important; border-width: initial !important; margin-bottom: 0px !important; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important;&quot; width=&quot;1&quot; /&gt;」のように時系列に Gibson の思考をまとめる方法もあるけれど、冗長だし論点がズレる可能性もあるので、端的に述べたいと思う。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;目的&lt;/h3&gt;生態学的視覚論が対象とする学問は「生態光学（Ecological Optics）」である。生態光学は Gibson による生物の認知に関する包括的な理論であり、生物の認知に関する彼のグランドデザインと言える。こう書くとかっこいいけど要は実装レベルに落としきれていない未完成な理論です。&lt;br /&gt;
未完成と書くのは、詳細化されていないのはもちろん、自身の考えが立証されたとする彼の実験が見当違いな項目を検証しており、未立証であると感じたからです。&lt;br /&gt;
&lt;br /&gt;
生態学的視覚論の目的は「視覚とは何か」を判明させるために、生物の認知方法を再デザインすること、そのものである。従来の生物の認知方法は不完全であると考え、生物という等身大の観点から認知方法を再設計してます。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;課題&lt;/h3&gt;視覚を理解するという生態学的視覚論の目的に対して、従来の生理学、光学、解剖学、物理学個々では（各学問の成果の統合である）視覚の説明ができなかった（少なくとも各分野の研究が進んでも説明はできないだろうと考えた）。これこそが課題である。&lt;br /&gt;
例えば、従来の視覚論では3次元の環境情報を網膜から光信号として受信し2次元化し、それを中枢神経内で3次元化（2.5次元とも表現される）すると考えられていた。この2次元の3次元化の際には、両眼と目視対象の3点から三角測量の要領で対象までの距離を得て、その情報を利用する。&lt;br /&gt;
いやいや、遠方の対象までの距離を人間は正確に判断できるけど、遠方対象までの距離と両眼間の距離は差があり過ぎて、従来手法では一定以上距離を持つ対象までの距離なんて分かるわけないよね、というのが Gibson の考え。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;アプローチ&lt;/h3&gt;視覚を説明するために Gibson が採った方法は、ありのままに生物の活動における視覚を考えようというものである。&lt;br /&gt;
具体的に、従来のように視点を固定して観察された現象から視覚を推定するのでなく、普通に立っている、動いている状態で見え方を実験してみよう、その実験結果から考察してみよう、である。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;位置付け&lt;/h3&gt;ここで上記で使用した語句をまとめる。&lt;br /&gt;
「生物」とは人間はもちろん、猫といった哺乳類、はては昆虫なども含まれる。&lt;br /&gt;
生態光学における「認知」とは「環境から知覚対象の意味を直接的に検出すること」である。&lt;br /&gt;
生態光学上では「環境の光や音などから（何かしらの情報により）光学的構造を検出し、（何かしらの情報により）光学的構造から対象の特徴を抽出し、（何かしらの情報により）特徴から対象の価値や意味を見いだすこと」となる。&lt;br /&gt;
なお、光学的構造を「包囲光配列」、特徴を「不変項」、価値や意味を「アフォーダンス」と呼ぶ。&lt;br /&gt;
&lt;br /&gt;
さて、Gibson が言う視覚において、「知覚」とは眼や耳などの感覚器官が環境から得られる光や音を検出すること〜不変項の抽出までをいい、「認知」とは知覚〜アフォーダンス検出までを示す。&lt;br /&gt;
&lt;br /&gt;
例を挙げると「イス」っぽく見える光構造（包囲光配列）から、地面と平行な平面を持ち観察者の膝程度の高さであるという特徴（不変項）を抽出し、座れるものという意味を検出する（アフォーダンス）までの行為が「認知」である。&lt;br /&gt;
なお、上記ではあえて「獲得する（もしくはその類義語）」という言葉を使わず「検出する（もしくはその類義語）」を用いている。Gibson は感覚を従来のような環境信号から情報を生成するというのでなく、情報は環境にあり生物はそれを見つけ出しているに過ぎないと考えているため。&lt;br /&gt;
さて、生態学的視覚論は学問として、生態学に位置付けられると思う。&lt;br /&gt;
Gibson が心理学者であり、かつ人間がどう感じるか（UX: User Experience）の観点で多くが述べられていることから心理学っぽくもある。&lt;br /&gt;
また、著書の中で反論対象分野として多く登場することから神経学っぽくもある。&lt;br /&gt;
それでもありのままの生物の活動における、生物と環境の相互作用を扱っていることから生態学がふさわしいと思う（だから生態光学という名前を付けたんだろうけど）。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;整理&lt;/h3&gt;さて、ここで、何が言いたいかを整理する。認知は包囲光配列、換言して対象の形態自体でなく、包囲光配列から抽出される不変項によって実現される。&lt;br /&gt;
また、不変項からアフォーダンスを直接的に検出する、つまり、認知は知覚情報を何かしら処理して間接的に実現されるものではない。&lt;br /&gt;
また、包囲光配列や不変項、アフォーダンスは自身にとって相対的であり絶対的なものではない。例えば、先の「イス」の例では、大人（くらいの身長がある人）から見ると「座れるもの」というアフォーダンスを得る対象であっても、子供からは「頑張れば越えることができる段差」であるかもしれない。&lt;br /&gt;
さらに、アフォーダンスは一般にいうメタ（もしくは属性情報等）ではない。あくまで現実世界の環境が「自分という身体にとって相対的にどういう価値があるか」という価値である。&lt;br /&gt;
うん、わかりにくい。例えばフライパンという対象に対して、いい大人は調理道具だと認識するわけだけど、そういうメタ情報はアフォーダンスではない。「（雨よけになる）ような大きさや固さ、水を通さなそう」という価値がアフォーダンスとなる（はず）。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;生態光学の価値&lt;/h3&gt;個人的には、生態光学の価値はアフォーダンスを得るまでの認知方法というより、愚直に「見る」ということに関して実験し考察し評価していることだと思ってます。次の価値は視覚を2次元として捉えて考察していることかと。&lt;br /&gt;
あ、もちろんアフォーダンスそのものは UX に対して貴重なアイデアを提供しており、そのアイデアそのものを否定してるわけでないです。あくまで生態光学における価値の話。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;今後のまとめ方&lt;/h3&gt;基本的には、下記のような感じでまとめようかと。&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;そもそも生物が見てる環境とは何か、その捉え方&lt;/li&gt;
&lt;li&gt;視覚における光の考え方&lt;/li&gt;
&lt;li&gt;視覚特徴って何よ&lt;/li&gt;
&lt;li&gt;Gibson 的視覚とは何さ&lt;/li&gt;
&lt;/ol&gt;&lt;h3 class=&quot;chaptitle&quot;&gt;余談&lt;/h3&gt;さすが原著です。難解な表現（具体的だけど抽象的）で数ページに軽く１時間かかるペースでしか読めなかったです。まぁ専門外だからというのもあるかもしれないですが。&lt;br /&gt;
個人的に難解と感じた理由は下記かなと思ってる。&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;とにかくまとまってないこと。いろんな章で同じ（だが若干異なる）ことを述べておりまったくまとまっていない。思いつきで書かないでくださいと言ってやりたかった。&lt;/li&gt;
&lt;li&gt;彼が心理学者であること。従来の認知論は目の網膜構造などの人間のH/Wをベースとしたものであるのに対して、多くの実験を評価することで人間の知覚の外部仕様をまとめ、その仕様からたてられた認知方法の仮説が生態光学である。そしてその仮説を立証するための実験の数々が少々論点がズレてるようで、それが誤解やあいまいさを産んでいるのかなと。&lt;/li&gt;
&lt;li&gt;現実に即した認知のみに着目していること。生態学的視覚論の対象はほぼ「現実環境の認知」に限られており、中朝モデルの認知、例えばソフトウェアアーキテクチャなんかはどうやって認知するのか、といったことまでなかなか結びつかなかった。&lt;/li&gt;
&lt;li&gt;論理が多分に飛躍していること。どれだけ「AゆえにB、BゆえにC」であろうところを「AゆえにC」と記載している箇所があったか。誤解を恐れずに言うと「生態学的視覚論」に関しては「見当違いな反論論文」への反論をもって自分の仮説の証明としており、自分の仮説の証明をまったくしてないだけでなく論点がズレていってしまい何を説明しているのかわからなくなってしまってること多々あった。&lt;/li&gt;
&lt;/ol&gt;などなど、否定的なことを書きましたが常識にとらわれず自分の実験結果を信じて仮説を立てそれを信じる熱意は尊敬に値します。</content><link rel='replies' type='application/atom+xml' href='http://ceromondo.blogspot.com/feeds/1541299494148142290/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ceromondo.blogspot.com/2012/11/vol-1.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/1541299494148142290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/1541299494148142290'/><link rel='alternate' type='text/html' href='http://ceromondo.blogspot.com/2012/11/vol-1.html' title='生態学的視覚論 Vol. 1 − 全体像'/><author><name>goemondo</name><uri>http://www.blogger.com/profile/17435609166287599853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBzzt2y_e87Gq_DyMOP7hLXjtzTK0S-UI-KcbukCTAe68exHWX3dwUwrXC1u6f0jRaJzF8-DbBz8Mxokx38sT-4s94c4VvJ2By6g6075v6WksNTNZsddzCT4p-IYM4Sg/s220/profile.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7457791004653031882.post-8168717565796222879</id><published>2012-11-11T13:04:00.000+09:00</published><updated>2013-03-24T21:09:53.041+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="convolution"/><category scheme="http://www.blogger.com/atom/ns#" term="deep learning"/><category scheme="http://www.blogger.com/atom/ns#" term="invariance"/><category scheme="http://www.blogger.com/atom/ns#" term="neural network"/><title type='text'>Convolutional neural network の不変性について</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;a href=&quot;http://cs.stanford.edu/~pangwei/papers/Le%20et%20al.%20-%202010%20-%20Tiled%20Convolutional%20Neural%20Networks.pdf&quot;&gt;Tiled convolutional neural networks&lt;/a&gt; &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7457791004653031882#tiled&quot;&gt;[1]&lt;/a&gt; によると、局所受容野（第1層）とプーリング（第2層）で構成される convolutional neural network (CNNs: 畳み込みニューラルネットワーク)において、第1層に設定されるパラメータ（重み）を完全に固定すると、ネットワークは移動不変性を獲得できるものの、スケールや回転といった変形に対する不変性は獲得できない。一方で、[1] で提案される「任意に設定される複数の重みからなる領域を単位に重みを共有する」タイル式ではスケールや回転への不変性も獲得できるという。&lt;br /&gt;
さて、以前にこのブログでまとめた &lt;a href=&quot;http://ceromondo.blogspot.com/2012/09/convolutional-neural-network.html&quot;&gt;Covolutional neural network&lt;/a&gt; ではタイル方式であってもスケールや回転への不変性を獲得できないとまとめた。うん、間違ってたの？という疑問をまとめたのがこのポスト。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;Tiled convolutional neural networks（Tiled CNNs）の概要&lt;/h3&gt;まずは [1] で提案されるタイル方式の畳み込みニューラルネットワークの概要をまとめる。詳細と言えないかもだけど、少し詳しいものは別ポストにまとめる予定。&lt;br /&gt;
Tiled CNNs は2階層型のネットワークであり、第1層は局所受容野、第2層はプーリング層である。Tiled CNNs の入力層にかかる重みは旧来の CNNs のように完全に同一の値を共有するのでなく、タイル単位に複数の重みを共有する。例えば旧来の CNNs では W&lt;sub&gt;i, [0, ..., n]&lt;/sub&gt; = W&lt;sub&gt;j, [0, ..., n]&lt;/sub&gt; となるが、Tiled CNNs では W&lt;sub&gt;i, [0, ..., n]&lt;/sub&gt; = W&lt;sub&gt;i+k, [0, ..., n]&lt;/sub&gt; となる。ここで W&lt;sub&gt;a, b&lt;/sub&gt; は a 番目の第n+1層ユニットと b 番目の第n層ユニット間の重みであり、k はタイルサイズである。以前のポスト&lt;a href=&quot;http://ceromondo.blogspot.com/2012/09/convolutional-neural-network.html&quot;&gt;Covolutional neural network&lt;/a&gt; では「ウィンドウ」と呼称したものである。ここで、タイルサイズ（k）が1であれば旧来のCNNsと同じ完全固定重みを持つネットワークとなり、k＝第n+1層のユニット数 とすると完全に非固定とするネットワークとなる。&lt;br /&gt;
さらに Tiled CNNs は特徴マップの概念を導入し、入力データは特徴マップ数だけ多次元化される（つまりマップ化した層から後段はマップ数だけ多次元化される）。特徴マップと第2層のプーリングに関しては先のブログや &lt;a href=&quot;http://ceromondo.blogspot.com/2012/10/lp-pooling.html&quot;&gt;Lp pooling&lt;/a&gt; にまとめたのでここでは省略する。ただ、ここで重要なのは各特徴マップは異なるタイルサイズを持つことができるということである。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgikNWosrYh4LSCxbpgNii2v8RMoEiScZexMCsaWYqVZ62PFEz9SSCCN5-xXAI4TKAOEkK2TREnVd5nHOrOCEbNPQlSDTIvVtHIw8uLYFLxKrRXKxLex5ayUhsyR54QRCj72bCpIhHqEc_v/s1600/fig1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;142&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgikNWosrYh4LSCxbpgNii2v8RMoEiScZexMCsaWYqVZ62PFEz9SSCCN5-xXAI4TKAOEkK2TREnVd5nHOrOCEbNPQlSDTIvVtHIw8uLYFLxKrRXKxLex5ayUhsyR54QRCj72bCpIhHqEc_v/s400/fig1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図1 （左）完全固定重みによる局所受容野とプーリングから構成されるCNNs, （右）局所的に重みを固定しない Tiled CNNs、同じ色（緑、赤、青）は同じマップに属すユニットを示し、模様（テクスチャ）が同じユニットは同じ重み（集合）である。ここで、特徴マップをまたいで同じ模様になっていたり同一マップ内にも同じ模様になっていたり、換言して同じ重みが同一・異なるマップで共有されるがこれはいかようにも設定できる。また、タイルサイズとプーリングサイズは特に同期させる必要はない。なお、この図では分かり易さのために1次元描写であるが第1, 2層は2次元以上でも構わない（2次元の場合はマップ次元も合わせると3次元となる）。[1]&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;h3 class=&quot;chaptitle&quot;&gt;Tiled CNNs はスケールや回転への不変性を持つのか&lt;/h3&gt;さて、このポストのテーマである。[1] によると、CNNs に適用されるプーリング機能は基本的に（局所受容野を採用するのであれば当該プーリングユニットに接続される入力ユニット幅内に収まる）一部変形だけでなく、移動、回転、スケールなどの不変性を持つ。しかし、完全固定とされた重みによる局所受容野と、マップの概念がないために一次元のマップしか持たないことから、最終的にネットワーク全体ではスケールや回転への不変性を獲得できず、一部変形や移動のみの不変性の獲得に留まるらしい（ちなみに、完全固定重みはハードコーディングで指定されることから、得られる移動不変性は hard codes translation invaliance なんて呼ばれたりもする。実際には外部ファイルから読み出してもいいけど学習したネットワークは再学習しないといけないのでそう呼ばれるのだろう）。一方の Tiled CNNs はタイル方式のみで（特徴マップ方式を採用せずとも）回転、スケール不変性をも得られるらしい。&lt;br /&gt;
このように [1] に述べられているが、これは半分正解で半分間違いだと思う。逆に、&lt;a href=&quot;http://ceromondo.blogspot.com/2012/09/convolutional-neural-network.html&quot;&gt;Covolutional neural network&lt;/a&gt;&amp;nbsp;で述べたこと（移動不変性は持つが回転・スケール不変性は持たない）も半分正解で半分間違いだと思う。何が言いたいかというと、スケール及び回転不変性は結果として得られる。但し、それは学習パラメータの自由度を増加させたことによりネットワーク内の記憶領域（ホップフィールドネットワークでいうところのエネルギー）が増大し、多くのパターンを学習できるようになるためでないのか。なので、ネットワークが記憶可能なパターン数までに、「回転された画像」を入力することで回転不変性を得られるし、まったく異なる入力ばかりを与えてしまうと回転不変性は得られないと思われる。もちろん「回転された画像」は単なる同一画像の位相が異なる画像であってもネットワークが後々抽出するであろう特徴が類似している画像であっても良い。&lt;br /&gt;
この議論が正しいとすると、タイル方式と同様に、特徴マップ機能も単に多様なパターンを覚えることができるようになるってだけ。例えばマップ1に指定されるタイルサイズより大きなサイズをマップ2に指定することで、ネットワークはスケール不変性を得ることができよう。実際に、上記で述べたようにタイルサイズはマップ単位に指定できる。もちろん各特徴マップで指定・学習される重みに、マップ間で同一でない値を設定することでマップ毎に特化した特徴を獲得できることになる。&lt;br /&gt;
さらに、第1層ユニット出力値にかかる重み設定方法も上記推測を支持する。[1]では入力層にかかる重み（W）を学習により更新される可変値とし、第1層にかかる重み（V）をスパース性を表現するために[0, 1, 0, ..., 0]のように固定としている。これから、[1]のネットワークは局所受容野内の微小な変化はプーリングにより対応し、局所受容野外の変化や局所受容野内の大きな変化はスパース性により対応していることがわかる。も少し分かり易く換言すると、[1]のネットワークは局所受容野内で特定のエッジが移動している移動変形や、局所受容野内で一部ノイズが入っているといった一部変形はプーリングにて対応する。一方、局所受容野内で特定のエッジが回転する回転変形は、局所受容野ユニット出力値を選択的に採用すること（＝別の画像として識別している）で対応する。&lt;br /&gt;
&lt;br /&gt;
まとめると、TIled CNNs は旧来の CNNs と比較して、多様な不変性を獲得できるのでなく（完全に重みを非固定とするのでないので学習速度をそこまで劣化させることがなく）記憶容量が向上することこそ真の特徴だと思う。回転及びスケール不変性を獲得できるのはその結果であって、ちょっと語弊を与える表現なのでないかと。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;余談&lt;/h3&gt;何が問題かっていうと、上記が単なる推測でしかないことです。本当はきちんと実証したいんだけど、いかんせんニューラルテックを把握することが目的でないし、そもそも忙しいしでなかなかできない。どっかの元知事でないけど、なんとかせないかんばい。&lt;br /&gt;
あと、さらなる余談だけど、各マップに指定するタイルサイズをどの程度にするかは結構重要な問題である。恐らく机の下の実験で入力データに合わせて設定していると思われるが、真に解くべきはこの値を学習できることでないかと。まぁ目的を高い認識率を達成する認識システムの構築とするか、動物の認識システムを模倣するのかで変わるんだけど。&lt;br /&gt;
&lt;div id=&quot;tiled&quot;&gt;[1] &lt;a href=&quot;http://cs.stanford.edu/~pangwei/papers/Le%20et%20al.%20-%202010%20-%20Tiled%20Convolutional%20Neural%20Networks.pdf&quot;&gt;Quoc V. Le, Jiquan Ngiam, Zhenghao Chen, Daniel Chia, Pang Wei Koh, Andrew Y. Ng, Tiled convolutional neural networks, In NIPS, 2010.&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceromondo.blogspot.com/feeds/8168717565796222879/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ceromondo.blogspot.com/2012/11/convolutional-neural-network.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/8168717565796222879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/8168717565796222879'/><link rel='alternate' type='text/html' href='http://ceromondo.blogspot.com/2012/11/convolutional-neural-network.html' title='Convolutional neural network の不変性について'/><author><name>goemondo</name><uri>http://www.blogger.com/profile/17435609166287599853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBzzt2y_e87Gq_DyMOP7hLXjtzTK0S-UI-KcbukCTAe68exHWX3dwUwrXC1u6f0jRaJzF8-DbBz8Mxokx38sT-4s94c4VvJ2By6g6075v6WksNTNZsddzCT4p-IYM4Sg/s220/profile.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgikNWosrYh4LSCxbpgNii2v8RMoEiScZexMCsaWYqVZ62PFEz9SSCCN5-xXAI4TKAOEkK2TREnVd5nHOrOCEbNPQlSDTIvVtHIw8uLYFLxKrRXKxLex5ayUhsyR54QRCj72bCpIhHqEc_v/s72-c/fig1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7457791004653031882.post-1209533030671553120</id><published>2012-10-24T23:45:00.000+09:00</published><updated>2012-10-24T23:45:27.940+09:00</updated><title type='text'>Data Stream Management Systems for Computational Finance の後半（セクション IV 〜 X）</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
前置き&lt;/h3&gt;
「&lt;a href=&quot;http://research.microsoft.com/pubs/138844/streams-finance.pdf&quot;&gt;Data Stream Management Systems for Computational Finance&lt;/a&gt;」の稚拙な意訳の後半。このポストではセクション IV 〜 X までをまとめます。セクション I〜III は「&lt;a href=&quot;http://ceromondo.blogspot.jp/2012/10/data-stream-management-systems-for.html&quot;&gt;Data Stream Management Systems for Computational Finance の前半（セクション I 〜 III）&lt;/a&gt;」をどうぞ。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
大雑把な後半部分のまとめ&lt;/h3&gt;
リアルタイムな処理を必要とする時系列データ（時系列ストリーム）処理にニーズあり → 時系列ストリーム処理基盤にニーズあり → ストリーム処理基盤の要件や使われ方、位置付けを整理（ここまで前半） → 使われ方、特にクエリの使われ方の具体化 → 複雑なクエリ処理も拡張有限オートマトンで大丈夫 → 他社比較でいいね！ → LINQでクエリ書いてみた → 結論としてやっぱりいいね！&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
IV. 基本的なストリーム操作&lt;/h3&gt;
株式データが我々のシステムで利用可能となったところで、いくつかのクエリを示してみよう。本報告ではクエリを記述する際には明確に理解できるようクエリ命令を英語で記述することにする。&lt;br /&gt;
&lt;span style=&quot;color: #336699;&quot;&gt;Q1 : Select all stock quotes for the ticker symbol “MSFT”, removing the unnecessary ticker symbol information in the output.（強引な訳：シンボル&quot;MSFT&quot;のティッカーを持つ全ての株価情報を Select せよ。なお、不必要なティッカーシンボルは削除せよ）&lt;/span&gt;&lt;br /&gt;
このクエリの処理動作を正確に理解するために、有限な入力と出力が例示される表を下記に示す。&lt;br /&gt;
&lt;br /&gt;
株式情報テーブル&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZl7qf8JAPqUH4K9RUxNBPCp_a3cUlerqWIXZHjtSxL99X3-u4MMruqUsL0vjkIimzryUWfC3cwYRP-KefJulFAxNJuG-eiiaKh1Cq_vKZ3jRJY_q_aulwLYm772xIuAcmNujE8x5zJzsh/s1600/StockTicerInfo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;83&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZl7qf8JAPqUH4K9RUxNBPCp_a3cUlerqWIXZHjtSxL99X3-u4MMruqUsL0vjkIimzryUWfC3cwYRP-KefJulFAxNJuG-eiiaKh1Cq_vKZ3jRJY_q_aulwLYm772xIuAcmNujE8x5zJzsh/s320/StockTicerInfo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
クエリ結果&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMIXSN0HEF2TDMt0xYEJ9r04k3PF_F6KdM4ytW1yq615o6AVe2O1_Ddn52WbGcHKAyKCuSi_nPaqFWOeKhYbbF2kautsyAgnRe3CdQanu-J-okpMR3ZhAPlTotWZY1-qLWO0GLC4c-nme1/s1600/StockQuery.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMIXSN0HEF2TDMt0xYEJ9r04k3PF_F6KdM4ytW1yq615o6AVe2O1_Ddn52WbGcHKAyKCuSi_nPaqFWOeKhYbbF2kautsyAgnRe3CdQanu-J-okpMR3ZhAPlTotWZY1-qLWO0GLC4c-nme1/s1600/StockQuery.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
上記テーブルは有限であるが、実際にストリーム操作の対象となるデータは有限ではない。本報告ではストリーム操作の理解を助けるために、このような有限の例を用いる。また、（このクエリでは）全ての株式情報がポイントイベントとして読まれることを前提としている。このようなクエリはフィルタ機能を使って実装され、テーブル内の各イベントデータがブール値述語の形式で比較・照合される操作として実行される。照合の結果が真であれば、そのイベントデータは出力対象となり、続く条件に照合され、最終的に出力から不要なティッカーシンボル情報が削除される。&lt;br /&gt;
次に紹介するクエリを下記に示す。&lt;br /&gt;
&lt;span style=&quot;color: #336699;&quot;&gt;Q2 : Take the output signal produced by FilteredStream, and smooth it by reporting a 3 second trailing average every second.（強引な訳：FiteredStreamが生成する出力情報を取得し、各秒で3秒間のトレード平均により平準化せよ）&lt;/span&gt;&lt;br /&gt;
説明のために、秒を単位としている。下記にこのクエリの入力と出力の例を示す。&lt;br /&gt;
&lt;br /&gt;
FilteredStream:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgCfSxuJ8DKG6uxn5QUk69bR9zShe3md59ibtbERSKOEgjccQDDx0POY_ukviUVN94_6JAFCSf_Y95hDFTEb_A7OpaT3DTt5iiZUAvaFBrgAepVGCzeJVerDQXJ2AX8esNzaOZpA8wwP3b/s1600/FilteredStream.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgCfSxuJ8DKG6uxn5QUk69bR9zShe3md59ibtbERSKOEgjccQDDx0POY_ukviUVN94_6JAFCSf_Y95hDFTEb_A7OpaT3DTt5iiZUAvaFBrgAepVGCzeJVerDQXJ2AX8esNzaOZpA8wwP3b/s1600/FilteredStream.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
SmoothedStream:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjynrAT8dVXS5cV1zHd6_i2UrmvHsoVvhDN-qIpbeou16KS3TlLKZxhWPdvDzDruMc4WzKibtQg6r0jvqSuqeZWM1saAmhrTDgiuYi1Kzau2dZLmXsynWySICqr9dQ9ed_kesj3UiGUxVvt/s1600/SmoothedStream.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjynrAT8dVXS5cV1zHd6_i2UrmvHsoVvhDN-qIpbeou16KS3TlLKZxhWPdvDzDruMc4WzKibtQg6r0jvqSuqeZWM1saAmhrTDgiuYi1Kzau2dZLmXsynWySICqr9dQ9ed_kesj3UiGUxVvt/s1600/SmoothedStream.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
上記テーブルはいくつかの興味深い性質を持つ。まず、ストリームには暗黙的に0となる値がないことである（訳注：time 1 や time 2 は値 0 を持つのではなく&quot;ない&quot;ということ）。それゆえ、time 5 より前（time 3, 4）や time 6 より後（time 7, 8）の平均を考慮する際に、3 つの時間ポイントを用いるのでなく、3 つより少ない時間ポイントの平均を求めれば良い（訳注：例えば time 4 の平均は time 3 とtime 4 の2つの値の平均となる）。（訳追加：この平均は移動平均であり、平均計算期間は対象時刻を中央とする期間でなく、対象時刻を末尾とする期間で計算される。下記はそのイメージ。&lt;br /&gt;
末尾平均&lt;br /&gt;
[time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;] 1 2 3&lt;br /&gt;
[calc time]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;br /&gt;
中央平均&lt;br /&gt;
[time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;] 1 2 3&lt;br /&gt;
[calc time]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;br /&gt;
以降、移動末尾平均（trailing average）と訳す。）&lt;br /&gt;
このような計算方法は（訳追加：スライディングウィンドウといった）強力なウィンドウ制御を参考にしている。この計算モデルの一つにホッピングウィンドウ（Hopping windows）がある。ホッピングウィンドウでは2つのパラメータを使って（時には複数の）バケット（訳注：ウィンドウのこと）にイベントを挿入しグループ化する。第一のパラメータはウィンドウサイズである。これはバケットのサイズに相当し、現在動作中のクエリが参照可能な時間間隔を決定する。この例では、3秒間の末尾平均を導出したいので、各時間毎に3秒間分のデータを収集する必要がある。それゆえ、この例でのウィンドウサイズは3である。&lt;br /&gt;
第二のパラメータはホップサイズである。これはバケットがタイムラインに沿って作成される頻度を指定する（訳追加：要はウィンドウの開始位置がジャンプ・ホップする幅のことである）。この例では全ての時間で移動平均を導出したいので、ホップサイズは1となる（訳追加：つまりこの例ではウィンドウは重複する。一方、ウィンドウサイズがホップサイズ以下である場合にはウィンドウは重複しない。特にウィンドウサイズとホップサイズが同一の時のバケットはタンブリングウィンドウと呼ばれるらしい。また、ウィンドウサイズより大きな期間のインターバルイベントやエッジイベントは複数のウィンドウにまたがることになる。ここまで読めばわかるが、基本的にスライディングウィンドウにおける遷移サイズをホップサイズとして明示化しただけである）。&lt;br /&gt;
1ホップサイズ、2ウィンドウサイズのウィンドウは下記のようにタイムラインを遷移する。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOdpo8zM5aTJ8WQjSV12rvdt46Lxqeh89BRY-Jv2rHJ1qCpjYKd9jQixS8Ux1mFVms3ux3M43iJXPqj79KxC_y1XDwYezQIJZjJVScMN_0bwOEjSf27CRguPcCzkqKm1_GW5LoWYHWdFsf/s1600/3secave.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;165&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOdpo8zM5aTJ8WQjSV12rvdt46Lxqeh89BRY-Jv2rHJ1qCpjYKd9jQixS8Ux1mFVms3ux3M43iJXPqj79KxC_y1XDwYezQIJZjJVScMN_0bwOEjSf27CRguPcCzkqKm1_GW5LoWYHWdFsf/s400/3secave.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
上記ホッピングウィンドウにより計算される移動平均は、全てのウィンドウで計算され、イベントのライフタイムは関連するウィンドウのライフタイムと同一であり、イベントはウィンドウ定義（訳注：ここではウィンドウサイズ）に従って決められるライフタイムの間だけ計算の対象となる。なお、ウィンドウの設置時間に関して、観察期間の開始時間は含まれ終了時間は含まれない（訳注：左閉右開区間 [start time, end time) ということ）。それゆえ、ウィンドウは time 1 から設置される（訳注：なおこの例では終端を示すことはできない）。先の例では time 1 を開始とするウィンドウは time 3 のみしか実際のデータを含まない。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
V. カスタム操作の実行&lt;/h3&gt;
DSMSはビジネスアプリケーション全般に共通する&quot;特別でない&quot;演算セットからなるツールボックスを提供する。このツールボックスは多くの汎用な要求を満足する。しかし、それぞれのビジネス分野には特有のロジックがあり、それゆえの各分野でユニークな要求が発生することは自然な考えである。ビジネスロジックとは、長い年月をかけて各分野の専門知識から生まれた結果である。ゆえに異なる分野の全ての専門知識からなるロジックを一つのプラットフォームでカバーするのは困難である。よって、DSMSが広範なアプリケーションに対応するには拡張可能なメカニズムが必要である。具体的に、インメモリでインクリメンタルにストリームクエリを処理するエンジンに、ドメインに特別なロジックをシームレスに統合できる拡張性が必要である。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;
A. 拡張メカニズムの設計&lt;/h3&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeyW_QIY-Lqm7VUczmvj2nQBnnrv1qF4IiMBOfUUOVGvX2D655XWMPzeJPEfxeEURiBubc48n7tiSb1ytXSziLybBxHJIfj4Pxamg5GpjPgAJ1utYyeGVHBzwkG9WZpxywje_Ao7jm4We-/s1600/Fig5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;172&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeyW_QIY-Lqm7VUczmvj2nQBnnrv1qF4IiMBOfUUOVGvX2D655XWMPzeJPEfxeEURiBubc48n7tiSb1ytXSziLybBxHJIfj4Pxamg5GpjPgAJ1utYyeGVHBzwkG9WZpxywje_Ao7jm4We-/s400/Fig5.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図5 ドメイン（特有のニーズ）に対する拡張ストリーミングソリューションの構成要素&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
図5には、ストリーム処理システムの拡張に必要な3つの登場人物が描かれる。ユーザ定義モジュール（UDM）ライターは専門家であり、分野に特異な演算をライブラリとしてコード化する。クエリライターはUDMをクエリロジックの一部として取り込む。このようにしてできるクエリは標準的なストリーム演算（filter, project, join など（訳注：project 演算子は恐らく利用したい業務（プロジェクト）を指定するための演算子））に加え、1つ以上のUDMを含むことが期待される。ビジネスにおける目的を達成するために、多くのクエリライターが同じUDMのリポジトリを活用するかもしれないことに注意すること（訳注：IDMライター、クエリライター共にインスタンス化するとか、変数の共有に気をつけよう、ということかと）。拡張可能なフレームワークとはUDMライターとクエリライターを繋ぐ構成要素である。このフレームワークはクエリ実行の際にUDMロジックをオンデマンドに実行する。それゆえ、フレームワークにはUDMライター、クエリライター両方にとっての利便性、柔軟性、効率性が求められる（訳注：図5によるとフレームワークはDSMSかその一部であるから、ここで言う○○性はコードの書きやすさや、登録や更新時のデプロイのし易さのことを言っていると思われる）。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;
B. パターンマッチを例とするUDM&lt;/h3&gt;
具体的な例を示して、イベントストリームに対して複雑なパターンマッチを行うUDMはどのように実装できるのかを議論する。我々はユーザ（ここではUDM作成者）がパターンを非決定性有限オートマトン（NFA：non-deterministic finite automaton）によるマッチングを行うと想定する（訳注：NFAは入力や状態だけでは次に遷移する状態を決定できない、もしくは入力条件に依存せずに次の状態に遷移するオートマトン。つまり、全ての状態や入力が完全でないオートマトンのこと。将棋などの完全情報ゲームは頑張れば決定性有限オートマトンに（しようと思えば）できるが、現実環境などの不完全情報なものは指数的に増加する入力や状態を扱わないといけないので非決定性有限オートマトンに陥り易い）。複雑なチャートパターンをサポートするために、オートマトンにおける状態遷移に関するランタイム情報を追加保持するレジスタの概念をシステムに追加した。我々はこの拡張的なパターンマッチング仕様を拡張有限オートマトン（AFA: augmented finite automaton） と呼ぶ。このオートマトンはループのない指向性非循環状態グラフであり、開始状態と（複数の）終了状態を持つ。状態（ステート）はエッジと遷移情報（訳注：＝ランタイム情報と思われる）により接続される。エッジは（入力イベントを引数とする）フェンス関数に関連し（訳追加：フェンス関数の結果により現在の状態から複数出ているエッジのいずれかを選択し）、遷移情報は（現在の状態に関連する何かしらの値、例えば後々に利用するであろうバッファ値などを引数とし、エッジが選択された後にレジスタに引数値を書き込む）遷移関数に関連する（訳注：原文を読むと、入力イベントによって次に進むべきエッジが決定され、レジスタの値によって次のどの状態に進むかが決定される。つまり、状態 s1 と状態 s2 の間には e[i, j]の2次元で表現されるエッジがあり、i はエッジ番号を指し、これは入力データに依存する。また j はレジスタの状態を指し、これはレジスタ値に依存する。なんて風にも読み取れるが、おそらくここまで高度ではない。ここで述べられるAFAは、エッジのあり方は既存のDFAやNFAと同じであり、記述する状態数を減らすためにレジスタを用いているに過ぎないと思われる。いや、それだけでも効果はすごいが。要は、過去に通過した状態の時の値をレジスタに保存しておき、先の状態で保存値をエッジ選択の条件判定に利用する。このようにレジスタを利用しなければ、レジスタに記憶させる値を入力データとして扱わなければならないため、レジスタに記憶させる値のパターン数だけ状態を分岐させなければならない。つまり、状態数が増大する）。これらの関数は共に2つのパラメータが入力される。新規イベントと現在のレジスタ値の2パラメータである。&lt;br /&gt;
例としてレジスタに R の値を持つステート X を考える。新規イベントが到達する時、ステート X から出ているエッジそれぞれがイベントにより妨害されるかどうかをフェンス関数を用いて評価する（訳注：分かりづらければ「エッジそれぞれが今回入力されたイベントにより通過可能かどうかを評価するフェンス関数を用いて評価する」と読めば良い）。評価の結果が真なら（訳注：分かりづらいが、本報告のフェンス関数は通過できる＝真、出来ない＝偽としているため、結果が真＝イベントにより当該エッジが通過可能であれば）、遷移関数を実行して、次の遷移先であるステート X&#39; 等で利用するであろう値を R&#39; として レジスタに書き込む。ステート X&#39; が最終ステートであれば、パターンマッチが成功したことを指すイベントを出力する（訳注：図7を見ると分かりやすいがステート q1 から q2 へは株価が上昇する時しかオートマトンには記述されていない。これはエッジが記載されていない状態になれば暗黙的に定義される失敗フラグ版終了ステートに陥る）。AFAに関する詳細に関しては我々の研究 [2] を読むことを進める（訳注：訳注コメントと後述される図7の説明を読めば AFA の概要は掴めると思う）。次のサブセクションではAFAを使用して複雑なチャートパターンを特定する方法を示す。&lt;br /&gt;
AFAによるパターンマッチはUDMとして実装することもできる。UDMとして実装されることで複数のクエリライターが異なるパターンに対して利用できるようになる。クエリライターは実際のオートマトンを決定し、UDMへの入力情報としてどのAFAを使用するかのキーを提供する（訳注：「クエリライターは複数のUDM (AFA) のインスタンスにアクセスできる場合に、利用パターンに最適な UDM （AFA, オートマトン）を決定し、クエリ-UDM 間のAPIが AFA type を引数としてもらうようなものであれば、それを指定する」という訳にした。原文は &quot;The query writer&amp;nbsp;provides this AFA as input to the&amp;nbsp;UDM.&quot;だが正直に訳すとAFAを作るのはクエリライターとなり矛盾するため）。UDMはシステムからイベントを受信し、全てのイベントに関してUDMはレジスタ演算や内部ステートの更新、出力イベントの生成を行う。クエリライターはネイティブ演算子（訳注：デフォルトの組み込み型演算子）と類似するやり方でUDMを使うことができるし、ウィンドウ処理やフィルタリング、その他のストリーム処理演算と組み合わせて使用することができることに留意すること。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;
C. 例：SmoothedStream上のチャートパターン&lt;/h3&gt;
&lt;span style=&quot;color: #336699;&quot;&gt;Q3: Detect the head &amp;amp; shoulders chart pattern over the stock stream for MSFT, over a ten-minute window.（強引な訳：MSFTに関する株式情報ストリームからヘッドアンドショルダーチャートパターンを検知せよ。なお、監視期間は10分間とする）&lt;/span&gt;&lt;br /&gt;
ここの例では平準化された株式ストリームを対象とする。クエリライターは UDM として実装される AFA を利用してヘッドアンドショルダーチャートを検出する。ヘッドアンドショルダーチャートとは価格 p1 から始まり、局所極大値 p2 に上昇し、局所極小値 p3 &amp;gt; p1 に低下し、局所極大値 p4 &amp;gt; p2 になり、 局所極小値 p5 &amp;gt; p1 に低下し、再び局所極大値 p6 &amp;lt; p4 になり、最終的に開始価格の p1 よりも下落する株式チャートのことである。ヘッドアンドショルダーチャートの例を図6に示す（訳注：ヘッドアンドショルダーチャートはいろいろなチャートパターンの中でも良く当たるパターンだと言われる。つまり、このパターンが出現したらネックライン幅（p4 - p5）だけ下落する可能性が高いということ）。 &lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB3AW2_S5-yNA8mM2ZGJhWvRCunnW82c16GIctODuT7-QzY6WJE8k2e7SjWfRV2cYWJc1rTGF9c-WXBcjV-t4EcH95Bu7-Res1ntNVmLYtZBiRGZx_A6fxJvK7AZnx-XngwGAjOleOyLfD/s1600/Fig6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;181&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB3AW2_S5-yNA8mM2ZGJhWvRCunnW82c16GIctODuT7-QzY6WJE8k2e7SjWfRV2cYWJc1rTGF9c-WXBcjV-t4EcH95Bu7-Res1ntNVmLYtZBiRGZx_A6fxJvK7AZnx-XngwGAjOleOyLfD/s200/Fig6.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図6 ヘッドアンドショルダーチャートパターン&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
このヘッドアンドショルダーチャートパターンを検知するのに我々は図7に示す AFA を用いることができる。図7の AFA では3つのレジスタを利用しており、&lt;r1 r2=&quot;r2&quot; r3=&quot;r3&quot;&gt; と表現する。3つのレジスタを用意することで p1, p2, p4 の3つの価格をそれぞれ追従することができる（訳注：遷移関数における条件判定に判定時点での極大値を用いるため。それゆえ、仮に4つのヘッドを持つようなチャートを検知したいのであればレジスタは4つ必要となる）。図ではオートマトンのそれぞれのエッジにフェンス関数と遷移関数が注釈付けされている（注釈はセミコロンで分割され、前者がフェンス関数、後者が遷移関数である）。ステート q0 は開始ステートであり q7 は最終ステートである。フェンス関数そのもの、もしくはフェンス関数の入力として、株式のアップチックとダウンチックのイベントはそれぞれ up(e) と down(e) と表現される（訳注：アップチックは売買可能最小価格単位だけ価格が上昇すること、もしくはその上昇値を、ダウンチックは売買可能最小価格単位だけ価格が下落すること、もしくはその下落値を示す）。例えば、エッジ a2 ではアップチック&quot;のみ&quot;を監視し、アップチックが発生すると、現在の株価である p2 をレジスタ r2 に保存する。この保存された値はエッジ a6 のフェンス関数で比較するために用いられる。&lt;/r1&gt;&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrJghZavgL23loE0RsKN5MY4mds721zxg-i8esgDOK0ZnvQX1li34lufTKG0dElb5jZ3v5_ujE5mKTXXvI3cQHZdWKhH2x3cXy1CM31nygNvxnkESKwC0Ycj3V04QADqyOLXDZQkgruu2T/s1600/Fig7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;120&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrJghZavgL23loE0RsKN5MY4mds721zxg-i8esgDOK0ZnvQX1li34lufTKG0dElb5jZ3v5_ujE5mKTXXvI3cQHZdWKhH2x3cXy1CM31nygNvxnkESKwC0Ycj3V04QADqyOLXDZQkgruu2T/s400/Fig7.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図7 ヘッドアンドショルダーチャート（パターン向けオートマトン）&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
VI. ストリームの分割、複数ストリーム間の相関と非相関&lt;/h3&gt;
これまで示した例では独立した株式を対象としてきた。多くの場合、それぞれの株式を独立に処理することを望むだろう。このような処理を行うために、我々はストリームをグループ化する。換言して、パーティショニング処理によりストリームを分離し、ストリームの一部に対して処理を適用する。全株式情報のそれぞれの株式に関してヘッドアンドショルダーパターンを検知するクエリは次ぎようになる。&lt;br /&gt;
&lt;span style=&quot;color: #336699;&quot;&gt;Q4: For each unique ticker symbol, detect the occurrence of the head &amp;amp; shoulders chart pattern of query Q3.（強引な訳：ユニークなティッカーシンボルを持つそれぞれに対して、クエリQ3で指示したヘッドアンドショルダーチャートパターンを検出せよ）&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilNUwbj3mNFfRVtuQAa7jDwqI3YDz_kwdtn0j8ng5dXvR576Zcfv8q6eOV2ypac03MaF2NXZV5v8uArUMYro9vPXVML3UTqKdx26M1Iucl9ZVFi45XOCArQGYgxhEQRVNxY1oUebmN4y-v/s1600/partition.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;112&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilNUwbj3mNFfRVtuQAa7jDwqI3YDz_kwdtn0j8ng5dXvR576Zcfv8q6eOV2ypac03MaF2NXZV5v8uArUMYro9vPXVML3UTqKdx26M1Iucl9ZVFi45XOCArQGYgxhEQRVNxY1oUebmN4y-v/s400/partition.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
このクエリの最初の部分はティッカーシンボルによって入力株式ティックを分割する。次に、分割された各パーティションに対して、ヘッドアンドショルダーパターンの検知を実施する。このクエリの出力は各パーティションの検知結果を結合し、単体の出力ストリームとなる。この一見シンプルな処理は実際には驚くほど強力であり、マルチコアシステムでの高い利用効率を実現するために利用される。&lt;br /&gt;
これまで挙げたクエリは１情報源からのデータに対するものであった。次に、2つの異なる情報源から入力されるデータを統合し処理するクエリを紹介する。&lt;br /&gt;
&lt;span style=&quot;color: #336699;&quot;&gt;Q5: For each stock on a dynamic &quot;white list&quot;, determine all occurrences of the head &amp;amp; shoulders chart pattern.（強引な訳：動的に変更されるホワイトリストに記載される各株式に対してヘッドアンドショルダーチャートパターンを全て検知せよ）&lt;/span&gt;&lt;br /&gt;
株式ティッカーデータに加えて、特定の期間に監視対象となる株式を設定できるリストが記述された別のストリームを入力とする。このストリームの各イベントはティッカーシンボルとそのライフタイムからなる。具体的に、下表は有効なホワイトリストストリーム（WhiteListStream）である。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ0M-7HdR0vW2VqoJBCFPZ4kb8zuxzIgjPmha907_-bSV11MXbzmgpEWCUyM7ceHEeNovsq-dzuH1ZB_1LbSqC_NnRsPdpvbiKa2hI5geqoAwkS0oB14xcRjnbOthACVBW7MZSJEZA78P7/s1600/whitelist.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;80&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ0M-7HdR0vW2VqoJBCFPZ4kb8zuxzIgjPmha907_-bSV11MXbzmgpEWCUyM7ceHEeNovsq-dzuH1ZB_1LbSqC_NnRsPdpvbiKa2hI5geqoAwkS0oB14xcRjnbOthACVBW7MZSJEZA78P7/s320/whitelist.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
上記ホワイトリストは time 0 から time 4 までと time 5 から time 7 まで Microsoft のティッカーシンボルを持つデータに対して、さらに time 4 から time 7 まで IBM のティッカーシンボルを持つデータに対して、ヘッドアンドショルダーパターンを検索するために利用されるリストである（訳注：本文中はMicrosoft は 0〜10 と 20〜100、IBM は 2〜20 までの時間を観測対象とすると記載されるが、訳では表や後に出てくる図に合わせた。多分先に本文書いて後で図を書く時に時間短縮した方が書きやすくね、となったが本文の修正を忘れたパターンと思われる）。&lt;br /&gt;
望む効果を達成するために、生のティッカーデータに上記ホワイトリストを結合させた。クエリ演算子 &quot;Join&quot; は2ストリームを入力し、次の方法で2ストリームのイベントを関連づける。一方のイベントは他方のイベントとそれらのライフタイムが有効である期間のみに比較され、両イベントの（シンボルマッチや期間マッチなどの）条件が一致した時に結合条件が成立する。また、結合条件が成立したイベントのペアは、2つのイベントの情報を統合したペイロードを持つイベントとして出力される（訳注：このような処理の結果として、シンボル照合が真かつ期間照合も真の場合に、照合対象のストリームはシンボルと期間を観点にフィルタリングされイベントとして出力される。下図がわかりやすい）。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv-ZCQ-49bLFn3U0205VE0aO_LhEVryQwTGQQzQteX0toDc8u9LRnIGUXFvMfm9kVWZ09wzrgvd_K8COou1rEl8OtBOhASlevM_hRSnljFPmEtpmXjjNbWiFdrS2-jou9RSyTqsDaZkJO-/s1600/whitelistmatch.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;117&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv-ZCQ-49bLFn3U0205VE0aO_LhEVryQwTGQQzQteX0toDc8u9LRnIGUXFvMfm9kVWZ09wzrgvd_K8COou1rEl8OtBOhASlevM_hRSnljFPmEtpmXjjNbWiFdrS2-jou9RSyTqsDaZkJO-/s400/whitelistmatch.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
具体的に、ホワイトリストストリーム WhiteListStream と 株式情報ストリーム StockTickerInfo を結合し、StockTickerInfo のシンボルフィールドがマッチすることを結合条件とする場合、WhiteListStream で特定されるライフタイムが有効である間に発生した StickTickerInfo の（複数の）ポイントイベントがフィルタリングされ、出力される。上記クエリはホワイトリストに一致する全ての株式ティックを出力するが、ブラックリストを使うことで簡単に望む株式ティックを削除することもできる。例えば下記のクエリである。&lt;br /&gt;
&lt;span style=&quot;color: #336699;&quot;&gt;Q6: For each stock not present in a dynamic &quot;black list&quot;, determine all occurrences of the head &amp;amp; shoulders chart pattern.（強引な訳：動的に変更されるブラックリストに&quot;記載されていない&quot;各株式に対してヘッドアンドショルダーチャートパターンを全て検知せよ）&lt;/span&gt;&lt;br /&gt;
WhiteListStream と同一のスキーマを持つ BlackListStream を用いることで、上記の結合操作を逆結合（anti-semi-join）に置換するブラックリスト処理を適用できる。この逆結合は一方のストリームに記載されていない情報を検知するために用いられ、その結果、指定イベントに該当しないイベントを検知することができる。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
VII. ソフトウェアツール&lt;/h3&gt;
DSMSにはリアルタイムストリームを処理する能力を持つ強力なエンジンが実装されることが期待される。このセクションで議論するのは、ストリーム処理エンジンにより提供される低レイテンシと高スループットに関してである。このセクションでは、DSMSのストリームエンジンを補助、処理能力を増強し、またストリームアプリケーションを容易に開発、デプロイする体験を提供するするソフトウェアツールについて記述する。このセクションでは主にプログラム、管理、見える化にフォーカスする。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;
A. プログラミングツール&lt;/h3&gt;
プログラミングツールは開発者がクエリの開発やテスト、デバッグを行うためのツールである。ストリーム指向業務の継続的な性質を考慮すると、継続的クエリのデバッグは従来のデータベースシステムにおけるアドホッククエリやスナップショットクエリと比較しても困難である（訳注：アドホッククエリとはGUIなどで簡易に作成できる&quot;その場しのぎの&quot;クエリのことであり、スナップショットクエリは恐らく集計クエリのことかと）。さらに、（訳追加：DSMSのストリーム処理では）入力イベントに一時的属性を導入するために、（訳追加：一時的属性の影響を受け）ストリームは多様かつ動的に変化するかもしれず、その振る舞いによるストリーム処理の結果に対して妥当性を判断することは困難である。それゆえ、デバッグや継続的クエリ処理パイプラインの中を流れるイベントのトラッキングを容易にするツールが必要となる。&lt;br /&gt;
ここで、C#やC++などのプログラミング言語のデバッガにおける制御フローとDSMSにおけるイベントフローデバッガ間には基本的な相違点があることに留意すること。制御フロー型のデバッグでは開発者は特定の言語で書かれたプログラムをデバッグモードでビルドし、特定の場所にブレークポイントを置きプログラムの制御フローにジャンクションを置き（訳注：あまり聞き慣れないがif-thenなどの分岐点となる場所に置くブレークポイントのようなものだと思われる）、指定したブレークポイントがヒットするまでプログラムを動作させる。続いて、コードやシステムの状態を推論しながら、関数やプロシージャへの/からのステップイン/アウトをし、プログラム実行が完了するまでの変数やその他を監視する。&lt;br /&gt;
（訳追加：既存の制御フローデバッガでは）（時間の経過により変化するこれら変数を分析するといった）変数の時間推論（Temporal reasoning）は制限されるか、不可能である（訳注：ここで言う時間推論とは時相論理（Temporal Logic）における推論であると思われる。時相論理とは時間との相関を持って対象を記述する論理であり、時間を状態変化を引き起こすパラメータ（の一つ）として状態を定義する論理のこと。この時相論理という考え方、知らなかった。面白そうなので別にまとめてみようかな）。&lt;br /&gt;
その一方、イベントフローデバッグは、あるクエリ処理から次のクエリ処理への時間の経過という視点を通じてイベントをトレースする。ここで、ストリーム上のイベントによる効果（訳注：要は KPI の値でありクエリ結果でありクエリ結果の妥当性）やクエリ計算の結果から出力イベントが生成されるまでの過程（訳注：要はクエリ処理プロシージャの妥当性）を理解することがデバッグの目的である。イベントフローデバッグの重要な点は、クエリ演算それ自身の制御や実行の正さを確認するというよりもむしろ、クエリ演算動作（Filter, Project, Join, Aggregate などの演算動作）がどのように出力イベントを生成するかを確認することにある。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;
B. 管理ツール&lt;/h3&gt;
DSMSの状態管理とはシステム状態の監視とクエリ処理性能の計測からなる。 システムによって生成・消費されるイベントの数やCPUやメモリの利用率といった統計情報を維持することで、DSMSシステムの問題の検知が可能となり、直ちに問題の解決に当たれる。もちろん先の統計情報はリソースに関する計画やロードバランシングにも利用できる。&lt;br /&gt;
リソースを多量に消費するストリームアプリケーションシステムにおいてきめ細かい粒度で統計情報を取得・維持するのは高コストであることを忘れてはならない。統計情報は時、日、週といった単位の間隔か、クエリ（によるイベントドリブン）に収集される。例えば構成要素レベルの統計情報（訳注：アプリやライブラリなどのイベントログなど）は演算子レベルやクエリレベル、さらには全システムレベルで収集される。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;
C. 可視化ツール&lt;/h3&gt;
可視化ツールはDSMSの文脈において（訳追加：他のツールとは）異なる目的のために利用される。それにも関わらず、このセクションでは可視化ツールの3つの主な機能に関してまとめる。最初の機能はドラッグアンドドロップでグラフィカルにクエリを構成できるUIを持つツールに関する。いくつかのDSMSはこのような機能を持つGUIツールを提供する。クエリ演算子はGUI画面ではボックスとして表現される。一方、演算子間のイベントフローはアローで示される。次の機能はそれぞれのクエリ構成要素上で統計処理が動作している間に実行されるクエリ及び今後実行されるクエリ情報（クエリ計画）を描くツールに関する。この項目も複数のDSMSで提供される。そして特に重要である最後の機能はユーザがデータストリームそのもの、及びストリームの集計情報やサマリをリアルタイムに監視し、複数の項目間や過去データ間で比較できる可視化機能である。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
VIII. 既存のDSMSの課題と対策&lt;/h3&gt;
このセクションではDSMSが解決すべき重要で基本的な問題をまとめ、様々なシステムや研究提案がこれらの問題を解決する方法をどう選択したのかを議論する。ここで言いたいのは、我々は商用マーケットにおける（上記問題に対する）全ての選択肢を総合的にカバーしたいわけではない。どちらかと言うと、それぞれのシステムで採用される戦略とともに様々な問題解決の選択肢を紹介したいだけである。なお、セクション IX では Microsoft StreamInsight で採用される解決方法の詳細をまとめる。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;
A. ストリーム処理システムの領域&lt;/h3&gt;
我々は研究分野と商用分野の両方で提供される広範囲に渡るDSMSの情報をウォッチしている。スタンフォード大の STREAM プロジェクト [6] はアカデミックのコミュニティーにて早い時期に提案されたストリーム処理システムの１つである。Oracle CEP エンジン [10] は主に STREAM 実行モデルに追随している。他にアカデミック分野では Aurora/Borealis [5] という名のプロトタイプがあり、これは後に StreamBase [4] として商用化した。Coral8（現在は Sybase CEP）は有名なDSMSであり、そのモデルは Oracle CEP とも StreamBase とも異なる。Esper はストリームデータ内の複雑なパターンを検知する機能にフォーカスしている。Microsoft Research による CEDR プロジェクト [3] は関係代数を継承した時間代数を提案し、時系列データベースとして早期から研究されてきた。Microsoft StreamInsight [1] はこの研究から派生した実行モデルをベースとして用いている。IBM InfoSphere Streams [8] はIBM Watson Research における System S 研究プロジェクトをベースとする。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;
B. アプリケーション時間とシステム時間&lt;/h3&gt;
多くのストリーム処理システムは&quot;第一級、正式なもの（first class citizen）&quot;として時間を考慮する 。つまり時間をデフォルトのパラメータとして扱う。そして、時系列集計（join）や時間軸上のサブセットとして用意され、そのサブセット上の演算を行えるウィンドウ操作といった処理手段を当たり前に提供する（InfoSphere Streams のようなシステムは時間指向の演算をサポートしないがアプリケーションが必要とする時には（約追加：プラグインなどを適用することで？）サポート可能である）。StreamBase ではウィンドウと演算が結びつけられている。一方、StreamInsight はイベントのライフタイムという形式を用いてウィンドウ動作にイベントを結びつけている。つまり、演算そのものにウィンドウの概念を採用するのではなく、イベントに有効期限を設定することで同様の操作を可能とする。イベントにライフタイムを導入する利点はイベントがアクティブであるということが直感的に分かりやすいことである。また、この方式のウィンドウ操作が時間代数により適用することも利点である（これについては後述する）。&lt;br /&gt;
従来まで暗黙的に時間はシステム時間として表現されてきた。システム時間とはDSMSが実際にイベントを受信し処理する時間である。ストリームシステムの第一世代である Stanford STREAM やAurora はシステム時間を用いてウィンドウの定義やその処理を行う。システム時間の利用は Esper といったいくつかの商用ストリームシステムに引き継がれている。さて、いくつかのシステムでは、アプリケーションによって定義されるタイムスタンプを使ってイベントを処理する。このタイムスタンプはアプリケーション時間と呼ばれる。StreamBase はアプリケーション時間を用いるものの、現在のシステム時間に関連付けされたイベントにアプリケーション時間を再割り当てする。ストリーム処理時だけアプリケーション時間を用いるシステム時間利用方法は動作中においては多様な結果をもたらす。但し、この利点は同じ入力情報源であること、同じクエリであることが前提である。システム時間（DSMSが実際にイベントを受信し処理する時間）とアプリケーション時間（アプリケーションにより提供されイベントに内包されるタイムスタンプ）を区別すると多くの利点がある。これは全ての処理がアプリケーション時間により決定されることが保証されるためである。例えば、DSMSの処理時間、クエリのイベント処理期間にかかわらず繰り返し処理しても結果は同じである。つまり、クエリとイベントは独立している。このため、クエリライターは容易にシステム処理を理解し動作状況を判断することができる。さらにデバッグも容易である。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;
C. 実行モデル、動作、代数&lt;/h3&gt;
クエリ仕様の意味やいつどうやって出力が生成されるかはシステムによって異なる。例えば Oracle CEP や Coral8 における（移動平均といった）演算はウィンドウの中身（イベント）が変化した時にいつでも生成される（例えばウィンドウへ/からイベントが追加/削除される時）。一方、StreamBase ではイベントのウィンドウからの出入りに関係なく、予め指定される時間間隔（例えば毎秒）に出力イベントを生成する。また（訳追加：警告などの）レポート出力タイミングという点も異なる。例えばウィンドウ処理が途切れるだけレポートを出力するか、それ以外も出力するか。さらに Coral8 は自動バンドル機構をサポートする。この機構により、バンドルもしくはバッチの中を変更することだけで、イベントドリブンに出力するか、タイムドリブン、例えば特定間隔に出力するかといった出力タイミングを制御することができる。各システムの実行モデルや動作の違いについては参考文献 [12] が参考になる。&lt;br /&gt;
Microsoft StreamInsight ではシステム動作に関連する問題を認識しており、重要視している。StreamInsight 設計に関する一つの目標はストリームクエリの一意性を保証することであった。StreamInsight は時間代数を基本的な概念として取り入れている。時間代数ではイベントをライフタイムを持つものとして処理し、クエリの出力を時変なイベント集合データベースとして扱う。システム時間でなくアプリケーション時間を採用することで、時間がクエリ演算動作を決定する。アプリケーション時間 T で与えられる出力は、時刻 T に有効であるイベント（集合）、換言してライフタイムに時刻 T を含むイベント（集合）にクエリ処理内容を適用した結果である。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;
D. イベントタイプ&lt;/h3&gt;
基本的なイベントタイプであるポイント、エッジ、インターバルを思い出して欲しい（忘れた方はセクション II を参照ください）。多くの商用システムはポイントイベントのみを採用する。STEAM のようなシステムでは Istreams（ストリームの挿入）と Dstreams（ストリームの削除）を使うことにより、間接的にエッジイベントが利用できる（訳注：挿入・削除する対象のストリームそのものがエッジイベントとなる）。Microsoft StreamInsight ではこれらイベントタイプはライフタイムを用いることで表現されている。エッジイベントに関して、イベントの開始時点で設定される開始エッジは終端が無限な期間として指定され、終了エッジは設定時点で正しい値が設定される。StreamInsight のポイントイベントは、右終端時間（一般に終了時間）が左終端時間（一般に開始時間）に最小時間単位を加算されたインターバルイベントに過ぎない。&lt;br /&gt;
興味深いことに、StreamInsight はその内部でDSMSを検証することを目的に時間代数を活用する。これは、DSMSエンジンのバグを検知するために実際の出力の比較用として、SQLサーバデータベースシステムが出力する期待値を用いるためである（詳細は[13]を参照のこと）（訳注：恐らく関係代数で期待値を求め、それを時系列データとするために時間代数を適用すると思われる）。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;
E. クエリ仕様&lt;/h3&gt;
ここではストリーム処理システムにかかるコミュニティにおける、言語や仕様に関する技術の多様性に着目する。初期のストリーム処理システムはデータベースシステムから派生しているため、クエリ言語としてSQLの仕様を継承した。例えば、Stanford STREAM プロジェクトはCQL（Continuous Query Language）を提案した。CQLはウィンドウ処理向けにSQLを拡張したものである。Oracle CEP [10] や StreamBase [4] のような商用システムは先のトレンドを継続し、StreamSQL と呼ばれる言語に拡張した（クエリ動作間の集約は未だ問題であったが [9]（訳注：convergence between the semantics は何と訳すべきか、正直分からなかったが[9]を読むほど興味がわかないので不明なまま。恐らく「クエリの連続処理を記述する際の集約というかまとめ書きする時の効率が悪い言語であった」とかその辺かと勝手に推測））。&lt;br /&gt;
SQLライクなクエリはデータベースをバックグラウンドとして持ちストリーム処理分野に入るユーザへのアピールとしては良いが、一つの問題がある。（訳追加：DSMSを利用するアプリケーションはユーザに対して時系列データを扱いやすいようなI/Fを提供する場合、換言してSQLライクなクエリ仕様をユーザには提供しない場合）アプリケーション内部でDSMSが処理できるようにクエリ文字列を構成しなければならない。このI/Fの問題によりアプリケーションはスムースにストリーム処理システムへ統合できない。&lt;br /&gt;
IBM InfoSphere は SPADE（Stream Processing Application Declarative Engine）と呼ばれる言語を用いて統合開発環境として Eclipse を使う。Esper はパターンマッチのために構成される独自のイベント処理言語を提供する。&lt;br /&gt;
Microsoft StreamInsight は.NET と Visual Studio 開発環境を使い、ストリームアプリケーションを書くことができる。また、クエリは LINQ [11] で記述する。LINQ はウィンドウといった時系列仕様を満足する時間概念が導入されている。この環境で、アプリケーション開発者は（サンプル）コード集やストリームクエリ構成中の自動コンパイルなどの機能を持つ強力かつ柔軟な統合開発環境を手に入れる。StreamInsight に関する詳細はセクション IX にまとめる。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;
F. ストリームにおけるイベントの不規則性とその修正&lt;/h3&gt;
イベントは典型的に非同期にDSMSに到着する。この原因はネットワーク遅延や異なる経路をパケットが通る、異なる情報源からの複数のストリームをマージしたためなど、いくつかの理由がある。多くの商用システムは、イベントをバッファしDSMSに入力する前にソートするといった、不規則性を制御する機能を持つ。しかしこのアプローチには限界がある。整列していないイベント数の予測が難しく、バッファリングするも遅延データを長い間待たなければならないかもしれない。しかも、実はストリームイベントは遅延しているだけで順序は正しいかもしれない。&lt;br /&gt;
Microsoft StreamInsight は整列されていないデータを直接に操作する。この基本アイデアでは、任意の時点で、DSMSに配信された現在のイベント（集合）を使ってベストエフォートに結果を生成する。イベントが遅延した場合、その遅延イベントを受信した時点でクエリ処理対象となり、DSMSは先に出力した結果への変更を指すリビジョン版の出力イベントを生成する（訳注：リビジョン出力イベントは差分かもしれないし、差し替えかもしれない。それに対する言及はない）。このアイデアは時間代数にフィットする。与えられた任意の時間では、DSMSの出力イベントと、入力ストリームの全てが入力されたと仮定した際の期待値は一致するためである。&lt;br /&gt;
但し、出力イベントの正しさを保証するために、また内部状態をきれいにするためにも、上記のようなソリューションでは時間経過に気をつける必要がある（訳注：いつ内部ステートをクリアすれば良いかわからなくなるため）。これはCTI（Current time Increment）イベントを利用することで解決できる。CTI イベント（これはセクション III で述べた中断制御パケット（パンクチュエイション：punctuation）とも呼ばれる）はアプリケーション時間 T に関連づけられ、今後出力されるイベントには時間 T より以前のタイムスタンプ（を持つ情報）は含まれないことを保証する（訳注：中断制御パケット自体の役割はいいとして、これを使うと「いつこのパケットをDSMSに投げるか」という問題が発生して、これはバッファサイズをどうするかという元々の問題と同じである。なので、この存在意義はいかがなものかと、ベストエフォート型と完全保証型、あってもその中間をユーザに提供しユーザに選ばせるのが良いのかな）。&lt;br /&gt;
他のシステムにも類似するコンセプトがあり、システム時間とアプリケーション時間を同期することを目的に、STREAM ではハートビートが用いられ、StreamBase ではタイムアウトが用いられ、Coral8 では最大許容遅延時間が設定される。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;
G. 組込み済み演算子と拡張性&lt;/h3&gt;
DSMSが提供される様々なアプリケーションドメインにおいては、豊富かつ効率的なDSMSの拡張機構に対して強いニーズがある。例えば IBM InfoSphere Streams はC++かJavaでビルトインにユーザ定義の演算子を拡張できる。Microsoft StreamInsight は豊富な拡張フレームワークが統合されており、アプリケーション開発者は柔軟に既存のライブラリを再利用したり、特殊な演算子を新規に書くことができる。ウィンドウ構築やその支援（訳追加：ライブラリ？）はこのフレームワークに含まれる。ユーザ定義演算は Visual Studio をベースとするプログラミング環境にて C# といった .NET 言語で書くことができる。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;
H. クエリ合成&lt;/h3&gt;
新しいクエリが既存のクエリの出力イベントである結果を再利用する、クエリ合成はDSMSに必要とされる。多くのDSMSは何らかの合成を許可している。Aurora は（可視化ツールのセクションで述べた）ボックスとアローと使ってクエリを表現するスタイルでのクエリ合成機能を提供する。IBM InfoSphere Streams はモジュール単位でクエリを組み立てることができる SPADE を提供する。Microsoft StreamInsight は動的なクエリ合成機能を提供する。この機能により、クエリは以前に出力されたストリームの終端を入力とすることができる。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
IX. Microsoft StreamInsight の詳細&lt;/h3&gt;
このセクションでは、セクションIV で紹介されたクエリのLINQによる実装例が示される。それ以下でもそれ以上でもなく、特にLINQを学びたい訳でないのでここは省略する。てかもうこの面倒でわかりづらい英語に正直つかれた。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
X. 結論&lt;/h3&gt;
この報告では金融工学における継続的データ処理に対して新しい手法を提案した。我々は汎用のミドルウェアであるデータストリーム管理システム（DSMSs）を紹介した。DSMSsは長期間に渡り時系列データストリームに対して実行されるクエリの処理システムである。ここではDSMSsが解決すべきユニークな課題を詳細化し、金融ドメインにおける具体的な例を用いてこれらの課題の解決方法を提示した。我々は金融工学におけるデータに時系列という特有の性質を付加し、その結果、提案したDSMSsはストリームデータに対しても過去データ解析に向けたオフラインデータに対しても完全に適合した。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
XI. 謝辞&lt;/h3&gt;
Microsoft StreamInsight チームの代表として我々を推して頂き、またこの報告をまとめるに当たり多大な尽力を尽くしてくださったチームの方々に感謝申し上げる。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
参考文献&lt;/h3&gt;
&lt;div id=&quot;ref1&quot;&gt;
[1] Mohamed Ali et al.: Microsoft CEP Server and Online Behavioral Targeting. In VLDB 2009.&lt;/div&gt;
&lt;div id=&quot;ref2&quot;&gt;
[2] B. Chandramouli, J. Goldstein, and D. Maier. High-Performance Dynamic Pattern Matching over Disordered Streams. In VLDB 2010.&lt;/div&gt;
&lt;div id=&quot;ref3&quot;&gt;
[3] Roger S. Barga, Jonathan Goldstein, Mohamed Ali, and Mingsheng Hong. Consistent Streaming Through Time: A Vision for Event Stream Processing. In CIDR, 2007.&lt;/div&gt;
&lt;div id=&quot;ref4&quot;&gt;
[4] StreamBase. http://www.streambase.com/&lt;/div&gt;
&lt;div id=&quot;ref5&quot;&gt;
[5] D. Abadi et al. The design of the Borealis stream processing engine.&lt;/div&gt;
&lt;div id=&quot;ref6&quot;&gt;
[6] In CIDR, 2005.Arvind Arasu, Shivnath Babu, Jennifer Widom: CQL: A Language for Continuous Queries over Streams and Relations. DBPL 2003: 1-19&lt;/div&gt;
&lt;div id=&quot;ref7&quot;&gt;
[7] Pattern Detection with StreamInsight. http://tinyurl.com/2afzbhd.&lt;/div&gt;
&lt;div id=&quot;ref8&quot;&gt;
[8] IBM InfoSphere Streams. http://www.ibm.com/software/data/infosphere/streams/&lt;/div&gt;
&lt;div id=&quot;ref9&quot;&gt;
[9] N. Jain et al. Towards a streaming SQL standard. In VLDB, 2008.&lt;/div&gt;
&lt;div id=&quot;ref10&quot;&gt;
[10] Oracle. http://www.oracle.com/&lt;/div&gt;
&lt;div id=&quot;ref11&quot;&gt;
[11] Language Integrated Query (LINQ). http://msdn.microsoft.com/enus/netframework/aa904594.aspx&lt;/div&gt;
&lt;div id=&quot;ref12&quot;&gt;
[12] I. Botan et al. SECRET: A Model for Analysis of the Execution Semantics of Stream Processing Systems. In VLDB 2010.&lt;/div&gt;
&lt;div id=&quot;ref13&quot;&gt;
[13] A. Raizman et al. An Extensible Test Framework for the Microsoft StreamInsight Query Processor. In DBTest 2010.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ceromondo.blogspot.com/feeds/1209533030671553120/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ceromondo.blogspot.com/2012/10/data-stream-management-systems-for_24.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/1209533030671553120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/1209533030671553120'/><link rel='alternate' type='text/html' href='http://ceromondo.blogspot.com/2012/10/data-stream-management-systems-for_24.html' title='Data Stream Management Systems for Computational Finance の後半（セクション IV 〜 X）'/><author><name>goemondo</name><uri>http://www.blogger.com/profile/17435609166287599853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBzzt2y_e87Gq_DyMOP7hLXjtzTK0S-UI-KcbukCTAe68exHWX3dwUwrXC1u6f0jRaJzF8-DbBz8Mxokx38sT-4s94c4VvJ2By6g6075v6WksNTNZsddzCT4p-IYM4Sg/s220/profile.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZl7qf8JAPqUH4K9RUxNBPCp_a3cUlerqWIXZHjtSxL99X3-u4MMruqUsL0vjkIimzryUWfC3cwYRP-KefJulFAxNJuG-eiiaKh1Cq_vKZ3jRJY_q_aulwLYm772xIuAcmNujE8x5zJzsh/s72-c/StockTicerInfo.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7457791004653031882.post-8242694472822367287</id><published>2012-10-24T21:58:00.002+09:00</published><updated>2012-10-24T21:58:32.097+09:00</updated><title type='text'>Data Stream Management Systems for Computational Finance の前半（セクション I 〜 III）</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;h3 class=&quot;chaptitle&quot;&gt;前置き&lt;/h3&gt;「&lt;a href=&quot;http://research.microsoft.com/pubs/138844/streams-finance.pdf&quot;&gt;Data Stream Management Systems for Computational Finance&lt;/a&gt;」の稚拙な意訳です。訳し間違い等あればご指摘ありがたくいただきます。また、公開された論文なのでポストしますが、もし問題があれば即刻削除します。&lt;br /&gt;
なお、この論文やたらと長いので2つに分割してポストします。まずはセクション I 〜 III まで。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;大雑把な前半部分のまとめ&lt;/h3&gt;リアルタイムな処理を必要とする時系列データ（時系列ストリーム）処理にニーズあり → 時系列ストリーム処理基盤にニーズあり → ストリーム処理基盤の要件や使われ方、位置付けを整理（どんなクエリ処理が必要かとかイベント取り扱い時間とかの要件、KPIに合わせたクエリ設計をするだろうとかの使われ方、DSMSの役割を整理）&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;Abstract&lt;/h3&gt;金融工学とは金融市場における特徴の抽出のために多量のデータから「モデル」を構築する計算工学である。現在のネットワークコンピューティングでは、モデルを構築したり改善したりするために利用可能なデータ量は指数的に増加している。多くの場合（投機）機会の獲得や損失を分けるのはデータ処理にかかる遅延である。多量データの複雑な処理を最小の遅延で実行する、というニーズはデータ処理のパラダイムを革新した。そのパラダイムシフトによりイベント指向なアプリケーション開発基盤などの開発に関するニーズが増加している。イベント指向システム（訳注：イベント指向アプリケーションが動作する基盤システムのこと）は宣言型プログラミングやインクリメンタル処理化といった従来のデータ処理基盤にて得てきたノウハウを組み込んでいる。さらに、イベント指向システムは、他のシステムがデータベース管理システム技術を適用している一方、人工知能技術を適用してきた。&lt;br /&gt;
本報告は上記のような特殊なアプリケーションのための基盤へのニーズをモチベーションに、時系列データ（ストリームもしくはイベントデータ）処理システムを深く検討した。なお、時系列データ処理システムはデータストリーム管理システム（Data Stream Management Systems: DSMSs）と呼ばれる。本報告では金融ドメインにおける実際の例を用いて、DSMSsの顕著な特徴や利点をまとめる。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;I. Introduction&lt;/h3&gt;&lt;h3 class=&quot;sectitle&quot;&gt;A. 今後のデータ処理パラダイムにおけるニーズ&lt;/h3&gt;金融工学では多量データを処理及び分析しそのデータの特徴を得る。近年のビジネスプロセスのIT化、ネットワーク帯域の増大を背景に、コンピュータやセンサ、アプリケーションから生成されるデータ量は増加しており、金融分野ではこの多量のデータを入力し分析やマイニングをするアプリケーションが登場してきている。この多量データには下記のような興味深い特徴がある。&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;データは即時的かつ連続である。換言して、データは終わりのない&quot;ストリーム&quot;としてアプリケーションに入力される（訳注例：センサなどの入力元で短い時間間隔でデータが生成され、即座にアプリケーションに入力される）&lt;/li&gt;
&lt;li&gt;データは時間依存性を持つ（時系列データである）。（訳追加：時系列データはそのデータが発生した時に最も利用価値が高いので）データから最大の価値を導くためには対象データへのクエリをインクリメンタルかつオンザフライにて処理する必要がある（訳注：現在のデータ処理に過去のデータも利用する場合に過去データを再度処理するのでなく、過去データによる結果を利用して（フィードバックデータとして利用して）現データを処理するインクリメンタル性と、オンメモリで処理するオンザフライ性が重要であり、両方を満足しないと金融工学において要求されるレベルのリアルタイム性を達成できない）。そして、アルゴリズム株式取引のような、継続的であるビジネスプロセスにクエリ処理結果を統合する。&lt;/li&gt;
&lt;li&gt;時系列データは後々実行される分析やマイニング、バックテスト&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7457791004653031882#ano1&quot;&gt;*1&lt;/a&gt;を目的にオフラインに保存されることもある。それらバックテストではリアルタイム処理で利用したのと同じクエリが実行される場合がある。&lt;/li&gt;
&lt;/ul&gt;このような高速性が要求される環境では、しばしば時系列データのストリーム処理で発生するレイテンシが投機機会の獲得と損失を分けることがある。このような時系列データ処理の重要性を考えると、金融アプリケーションのような特殊な問題を解決するには垂直ソリューションが好まれるだろう（訳注：ニーズがあってお金も持ってるユーザが多い市場だけど、他の市場ではオーバースペック過ぎるほどとにかくとんがった製品でないとダメなのでカスタム製品になってた。でも世の中が進化して金融市場だけでなく他の分野でも求めるようになってきちゃったよねー、と続く）。しかし、そのようなソリューションは特定のアプリケーションでは効率的である一方、多くのアプリケーションにまたがり汎用化することは困難である。さらに、それらは構築、維持、管理にかかるコストが高価であり、再利用性も低い。&lt;br /&gt;
ソフトウェアの再利用性に関する問題はプラットフォーム化することで解決されてきた。多くのユーザアプリケーションはソフトウェアプラットフォーム（ライブラリ）を利用することで簡単に構築できるようになった。その代表例がデータベースであり、シンプルであるが強力な関係代数によるデータモデルを提供する。この機能により、アプリケーションは集合指向データ（訳注：集合論を基礎とする関係代数によりテーブルとして格納されるデータ）に対して、宣言型記述を用いた複雑なクエリを実行できる。&lt;br /&gt;
データベースはほぼ更新されないオフラインなデータセットの分析に向いている。一方、最近の環境では長く終わりの見えない連続なデータストリームが処理対象となっており、このデータはデータベース対象範囲でない。そこで新しい解決方法が求められる。つまり、データベースにはシステムへのデータの到着率が高い場合、全データを受信しデータベースへロードし、インデックスを作成し、最後にユーザによるワンタイムクエリを実行する余力はない。むしろアプリケーションが&quot;アプリオリに&quot;クエリを発行できるようにする必要がある（訳注：ここでのアプリオリは経験的認識に先立って認識されるという意味の「先天的」や「先駆的」という意味から「いつでも」という意味で用いていると思われる）。つまり、クエリは新しいデータがデータソースから到着した際に（過去のクエリ結果に対して）連続かつインクリメンタルに計算処理され更新される必要がある。なお、インクリメンタルコンピューテーションとは新しいデータが到着した時に過去のデータに関して再処理することなしに、（過去の）クエリ結果を更新することを意味する。インクリメンタルコンピューテーションでは、新しく到着したデータに対して低レイテンシにレスポンスすることが求められる。しかし、データベースのクエリ処理はワンタイムという特性があるため、インクリメンタルに結果を導出することを直接にサポートしない（訳注：ストアドプロシージャを利用することでSQL実行結果をテーブルに格納でき、その結果を利用してインクリメンタルに処理を行うことはできるがストアドプロシージャに対応したDBMSが必要）。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;B. イベントベース時系列データ処理のパラダイム&lt;/h3&gt;データ処理関連のアプリケーションとソリューションに関して、データ到着率[number of events per sec]とレイテンシの観点でまとめた分布を&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7457791004653031882#fig1&quot;&gt;図1&lt;/a&gt;に示す。前述の通り、カスタマイズされたソリューションやデータベースシステムはストリームデータ処理基盤として不適応であることから、近年では多量の時系列データを低レイテンシに処理・管理するためのデータストリーム管理システム（DSMS）の開発に多くの労力が注がれた。DSMSにより、アプリケーションはストリーミングデータ発生元に対して、長時間継続して実行可能なクエリを発行することができる。例えば、DSMSは株価情報をストリーム（もしくはデータフィード）とするアプリケーションに適用できる。ここで、株価ストリームデータはイベント（もしくは通知）として表現され、銘柄と値を含む。アプリケーションは上記ストリームの継続的なモニタリングと、株価が予め設定されたしきい値に近づいた際のアラート出力を望むだろう。長時間実行されるクエリ（以降ロングランニングクエリ）はこのような処理のことであり、継続的クエリ（Continuous Query: CQ）と呼ばれる。アプリケーションはCQをDSMSに登録し、そのCQを用いてDSMSはリアルタイムにストリームデータをモニタリングし、効率的にクエリ処理を行う。CQはイベントドリブンに処理される。DSMSは全ての新しいイベントに関して、今回のイベントでクエリ結果を更新する必要があるかを効率的かつインクリメンタルにチェックし、もしあれば出力イベントを生成する（訳注：つまりアラートを出力する）。例えばDSMSが受信する全ての株価情報に対してしきい値を越えているかを確認し、もし越えていれば関連株価情報を出力する。このDSMSの出力はCQ（及びストリームデータ）によって生成される結果である。つまり、CQはイベントストリームを受信し、新たなイベントを生成する。また、CQ及びその集合はその構成により、複雑なアプリケーションの要求を実現することができる。&lt;br /&gt;
DSMSはリアルタイムなインメモリデータ処理向けのデータ管理システムである。このデータ処理が必要なアプリケーションは多岐にわたり、不正検知、（製造業や棚卸管理などで）センサから入力されるRFIDのモニタリング、株式のアルゴリズム取引などが挙げられる。金融工学アプリケーションでは、データ処理ワークフローをまわす際にいくつかの課題により、アプリケーションとそのデータ処理の間で摩擦が発生するかもしれない。この課題とは、システムへのデータ入力I/F、データ管理システム実装方法からのアプリケーションロジックの分離、ビジネスロジックやワークフローへの結果の出力I/Fに関する。これら課題はDSMSによりある程度解消することができる。さらに、DSMSはこのドメインのアプリケーションにとって重要である低レイテンシでのデータ処理を実現できる。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglHztjVDzTKvAiESNNjsl_va455XGPs7uPu75m3103VIwNCmk0aRtXVJLgffcOV6cbRiAjm2FiT3q8-I-TxDRNPjyoquH3p9pJnTO6ddl-Y8_k-YrusKRd7Ly6u6VnCL-fShwkXMaR7iHV/s1600/Fig.1+Scenarios+for+Event-Driven+Applications.png&quot; id=&quot;fig1&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;242&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglHztjVDzTKvAiESNNjsl_va455XGPs7uPu75m3103VIwNCmk0aRtXVJLgffcOV6cbRiAjm2FiT3q8-I-TxDRNPjyoquH3p9pJnTO6ddl-Y8_k-YrusKRd7Ly6u6VnCL-fShwkXMaR7iHV/s400/Fig.1+Scenarios+for+Event-Driven+Applications.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図1 イベントドリブンアプリケーションのシナリオ（状況）&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;h3 class=&quot;sectitle&quot;&gt;C. ビジネスアプリケーションのライフサイクル&lt;/h3&gt;ビジネスへのDSMSの提案価値は、&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7457791004653031882#fig2&quot;&gt;図2&lt;/a&gt;に示す&quot;monitor-manage-mine（監視、管理、マイニング）のM&lt;sup&gt;3&lt;/sup&gt;サイクル&quot;に関する。我々の用意するDSMSはリアルタイムにデータをモニタリングし、継続的クエリに応答し、興味深いパタンを検出する。この結果は日々のビジネスにおける行動の管理や（次のアクションの）実行のために利用できる。例えば、アルゴリズム株取引や不正検知などに利用可能である。最後に、生データはオフラインに保持される。過去のデータをマイニングすることで、新しいCQや（モニタリングフェーズへフィードバックされる）モニタリングパタンが発見されるためである。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHH1X4EOeBmN-uq75nWpoy6ttvJO2tNfShmIUyUee2ndLXMarOXYDoeJArO_LaZRpoaz-NPIHiOK8MYsPafv2pmbMe2v9PUWHjB5-nHYMFmPJz9KBHmdgyiuqb-W_ApG49zPP-g7lwJTY-/s1600/Fig.2+The+monitor-manage-mine(M3)+cycle.png&quot; id=&quot;fig2&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;276&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHH1X4EOeBmN-uq75nWpoy6ttvJO2tNfShmIUyUee2ndLXMarOXYDoeJArO_LaZRpoaz-NPIHiOK8MYsPafv2pmbMe2v9PUWHjB5-nHYMFmPJz9KBHmdgyiuqb-W_ApG49zPP-g7lwJTY-/s400/Fig.2+The+monitor-manage-mine(M3)+cycle.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図2 監視-管理-マイニング（M&lt;sup&gt;3&lt;/sup&gt;）サイクル&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;M&lt;sup&gt;3&lt;/sup&gt;サイクルの実行にあたり、アプリケーションはオフラインデータに対して（リアルタイムで実行した）同じクエリを実行する必要があるかもしれない。例えば、過去データに対するバックテストの実行や、データマイニングによる興味深いトレンドやパタンの発見を行うためである。M&lt;sup&gt;3&lt;/sup&gt;サイクルに関して、我々は II 章の該当部分にてさらに議論する。その章では図2の他の側面をさらに詳しく述べるだろう。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;D. 実行例&lt;/h3&gt;他の議論すべきことに関しては実行例を提示することで、我々は徹底的にかつ具体的に株取引アプリケーションを形式化する。&lt;br /&gt;
例1（株取引アプリケーション）&lt;br /&gt;
様々な株取引の結果、イベントとして株取引情報がアプリケーションに入力されるものと仮定する。それぞれのイベントは取引された時間を示すタイムスタンプ、銘柄、最終取引時の値と出来高（株数）を含む。トレーダが興味を持つ株式に関して、トレーダはまず移動平均値に平滑化し特定のチャートパタンを検知するなどの特別な演算を実行したいかもしれない。また、アプリケーションへ入力される株式の集合は株式ポートフォリオの組み方により時間と共に変化するかもしれないし、そもそもブラックリスト記載の株式以外の全ての株式を対象とするかもしれない。なお、DSMSはチャートパタンの検知などの株取引（のための）処理と、ホワイトリスト・ブラックリストのリアルタイム更新を同時に実現できる。これは、株式集合もしくはリスト更新要求が通知（イベント、イベントストリーム）として入力されるためである（訳注：株式集合とリスト更新要求のどちらを優先するかはシステムもしくはアプリケーション依存であるが、リスト更新要求の優先度が高いとすると、時刻 T にて入力された更新リストと株式集合に対して、DSMSはリストを更新し、更新されたホワイト・ブラックリストでフィルタし、時刻 T 時点の株取引処理結果をイベントとして出力する、という処理フローとなる）。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;E. DSMSの要件&lt;/h3&gt;大規模かつ終端のないストリームデータに対してクエリを実行するDSMSには、それ特有のチャレンジすべき項目があり、効率的に対処する必要がある。下記にこれらチャンレジ内容に関してまとめる。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;1) 使い易さと仕様の完全性&lt;/h3&gt;&lt;h3 class=&quot;sectitle&quot;&gt;a) クエリロジックの基本的な表現能力&lt;/h3&gt;DSMSユーザが容易かつ宣言的にクエリロジックを記述でき、最終的に複数のクエリからなるシーケンスを作成できることが重要である。宣言型プログラミングにより、クエリを記述するユーザはクエリロジックの構築に集中でき、クエリがどう実装され実行されるかを気にする必要がない。さらに、DSMSは時系列データ（時間指向データ、つまり「継続的に変化するデータでありインクリメンタル処理が必要なデータ」）を深く考慮したシステムであり、クエリロジックの表現を考える上でのコア要素として、ウィンドウプロセッシングやタイムプログレスといったコンセプトを組み込むことが必要である（訳注：ウィンドウプロセッシングとはスライディングウィンドウを利用したフロー制御、タイムプログレスとは時間の経過を意識したロジック、例えば、入力される時系列データにライフタイムを設けるロジックなどを指していると思われる）。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;b) 遅延データのハンドリングと遅延データによる障害の補正能力&lt;/h3&gt;DSMSが時系列データの入力を契機に動作することを考えると、イベントの到着遅延のような問題は解決されるべき問題である。（単なるネットワーク遅延問題だけでなく）別の問題として、データソースがイベントを生成後にエラーを検知し、過去のイベントを変更するか完全に削除してしまうケースも挙げられる。この遅延問題の一つの解決策は、遅延イベントが発生しないと保証できるまでデータ処理の開始を遅延させることである。しかし、この解決方法は出力生成までのレイテンシを増大させる。代替の解決策は、積極的にイベントを処理しタプル（訳注：クエリ処理により生成されるイベントの集合、組）を生成し、不規則なイベントを受信する際に補正することである。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;c) 拡張性&lt;/h3&gt;DSMSユーザはDSMSのデフォルトのツールボックスにより多くの操作（とその連続からなる操作シナリオ）を実行できるかもしれない。しかし、基本操作で実現できない複雑さ、もしくは多様さを持つアプリケーションを考えると、DSMSには汎用の拡張フレームワークが求められる。拡張フレームワークにより、アプリケーションはDSMSの一部としてカスタムなストリーム処理ロジックを実行できる。このフレームワークには、レガシーライブラリのサポートはもちろん、データのウィンドウ制御やインクリメンタル処理機能からなるビルディングブロック構築を容易化する機能、パワーユーザ向け機能も含まれる。金融工学において特に拡張性は重要視される。それは、金融機関は競合他社との差別化のために自社のアドバンテージを発展させ、それを維持する傾向があり、カスタムライブラリやカスタム技術はそのために利用されているという事実を根拠とする。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;d) 仕様の総称化&lt;/h3&gt;クエリロジックの仕様や動作は、イベント入力の実タイミングやその実装方法から独立させたい。例えば、イベントソースがオフラインに保存されたファイルであってもリアルタイムにデータを出力するセンサであっても、特定のイベント集合と特定のクエリによる出力は常に同じであるべきである（訳注：from a file on from a sensor の on は or として訳した）。ここで、DSMSクエリの仕様を総称化することにより、（複数の入力に対応するために入力層だけ異なる類似したクエリを作成するなどの）重複作業による無駄を排除し、セクション I で述べたM&lt;sup&gt;3&lt;/sup&gt;サイクルをまわすことができる（訳注：Genericityは「総称性」や「総称化」と訳した。つまり、C++におけるテンプレートクラスのように実際の型に依存せずに、メンバ変数などを決定できる（仕様化できる）、メンバ関数処理を定義できる（動作定義できる）、その結果いちいち複数の型にまたがり同じ処理を記述しなくて良い、という意味で使用している）。この仕様の総称性により、DSMSの処理対象がバックテストのための過去データかリアルタイム処理のための現在データかを隠蔽でき、ユーザの思考モデルとクエリ記述の間にミスマッチが発生することを防止する。&lt;br /&gt;
仕様の総称性は、ストリームデータ操作の動作タイミングをシステム時間でなくアプリケーション時間で表現することで実現できる。アプリケーション時間の基本的な考え方は（制御パラメータの形式として）時間を実際のイベントそれ自体の一部とすることであり、アプリケーション時間を採用することでDSMSの出力は、タプル（＝DSMSの出力それ自体）が実際に出力される時間から独立となる。つまり、DSMSの出力は独立したイベント内で与えられるタイムスタンプのみに依存する（訳注：イベントのプロパティとして与えられるタイムスタンプのみに依存すれば、イベントはそのままオフラインに保存されるため、過去データでもリアルタイムデータでも処理結果は変わらない）。そうすることで、リアルタイムとオフラインで同じクエリを実行すれば、ストリーム操作の動作はイベントのペイロードとアプリケーションタイムスタンプに依存する時間代数（temporal algebra）として特定できる。なお、時間代数は、時間指向に基づいて関係代数を拡張（適用）したものである（訳注：時間代数の詳細は後述される）。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;e) デバッギングの容易性&lt;/h3&gt;DSMSの解決すべき重要な課題の一つは、ストリームクエリ（訳注：いろいろと言い方は変わっているが、継続的クエリのことであり、ストリームデータを対象としたクエリのこと）のデバッギングに関する。この機能はとりわけストリーミングデータ処理システムにおいて有益である。ストリーミングシステムへ入力されるデータはオンラインに絶え間なく処理され、そのデータ処理における正確性検証（デバッギング）は一見して実行不可能なタスクであるためである。デバッギング実現のための１つの重要なコンセプトは、システム時間の代わりにアプリケーション時間を利用することである。時間代数の演算にアプリケーション時間を使用し総称化されたクエリを用いることで、いつどうやって独立したストリームイベントが処理されるかに関係なく、クエリ結果（DSMS出力）は一意となる（訳追加：つまり、アプリケーション時間を指定すると一意のデータを取得できるため再現性がある）。この再現性は出力ストリーム（訳注：いろいろと言い方は変わっているが、クエリ結果のことであり出力イベントのことでありDSMS出力のこと。DSMS出力はDSMSユーザにとってのイベントであり、入力同様連続データでありストリームと言える）に観察される特異な結果に関して、その根本的な原因をトレースするのに有益である。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;f) その他の忘れ易い課題&lt;/h3&gt;ストリーミングシステムにおいて、我々はシステムの特定の側面をユーザから分離したい。この特定の側面とは高可用性のために採用される冗長構成（クエリが実行されるマシン台数）などである。QoSの観点から、DSMSのエンドポイント（訳注：例えばDSMSシステムのフロントサーバなど）に対して、利用するクエリに関する情報やその動作要件を提出させ、その要件に基づいて、システムを透過的にスケールアウトさせたり、高可用モードで動作させることが理想的である。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;2) 性能&lt;/h3&gt;DSMSが一般にリアルタイム処理が必要なアプリケーションで利用されるため、高性能性は最優先の検討事項である。データベースと異なり、大抵のDSMSはディスクへのデータ書き込みや書き込みデータの後の利用を考慮していない。それゆえ、低レイテンシを実現するために、大抵のDSMSではメインメモリに内部状態を保持し、イベントや内部状態はCQ処理に必要とされなくなる際に破棄される。イベント到着率がシステム処理能力を超えた場合、イベントはインメモリのイベントキューにバッファされる。なお、このバッファは演算処理ユニット間に置かれる（訳注：ここでは operators を演算処理ユニットと訳した。想定したシステムは単純構成の処理ユニットがバッファを挟みパイプラインに連結されたシステムである）。システム処理がデータ到着率についていけなくなりバッファが溢れる場合、フロー制御やロードシェーディング &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7457791004653031882#ano2&quot;&gt;*2&lt;/a&gt;のようなテクニックが必要となる。&lt;br /&gt;
DSMSの性能を最適化するにあたり、次のようなメトリック（測定指標）を用いることができる。(1)レイテンシ：イベントがシステムに入力されてから結果が出力として観測されるまでの時間であり、すなわち、1イベントに関するキュー内の待ち時間と演算処理ユニットによる処理時間の和である。(2)スループット：実行時間あたりの結果として出力されるイベントの数。(3)正確性：どの程度のクエリが正しい値から逸脱しているかを反映した値であり、不正となるのはイベントの欠落やロードシェーディング実行、イベント到着遅延（訳注：つまり予め設定されたタイムアウト値以上の遅延データは破棄するということ）による。(4)メモリ使用量：クエリ処理に使うメモリ使用総量。&lt;br /&gt;
なお、これらのメトリックはトレードオフであり、システムはユーザ定義の QoS に従い性能を最適化する必要がある（訳注：(2)や(3)を優先すると(4)はそれらに反比例して増加する。それゆえ、各メトリックの[min, max]ユーザ定義に従い最適化しなければならない）。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;3) 管理の容易性&lt;/h3&gt;DSMSの役割はストリームデータに対するクエリ処理と、その結果の出力だけではない。DSMSは徹底してリッチな体験をユーザに提供する必要がある。そのためには、クエリの接続性（訳注：composability の訳として接続性、接続可能性、構成可能性、結合性、結合可能性、コンポーザビリティ等考えられるが、ここで言いたいのはクエリとクエリの接続が適切に行われることを意味するため「接続性」とした）、多様な環境への展開容易性（DSMS物理構成としてシングルサーバでもクラスタでも良く、またモバイル機器からの利用も考慮すべきである）、認証なしユーザによりアクセスされるデータを避けるといったセキュリティ性などを提供する必要がある。クエリ接続性とは、過去に実施されたCQの結果やストリームデータを入力にクエリを処理するといった&quot;クエリ結果を利用したクエリ実行&quot;を意味する。（訳追加：何段ものクエリ処理が必要であったり、過去のクエリ処理結果をフィードバックするような）複雑なイベントドリブンアプリケーションにおいて、接続性は重要なビルディングブロックである。&lt;br /&gt;
他に、スループットやメモリ使用量などの性能メトリックを得るために、システムの現在の状態を容易に問い合わせることができるシステム状態モニタリング機能をDSMSの重要な特徴として挙げることができる。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;4) インターオペラビリティ&lt;/h3&gt;DSMSは、センサやメッセージバス、ネットワークポート、データベース、分散キャッシュなどの様々なデータソースを経由して収集されるデータを密接に利用する。DSMSはリッチなユーザ体験を提供するために他のミドルウェアと連携して利用される機会が多く、このようにリッチなインタフェースに対応することは重要である。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;F. サマリと概説&lt;/h3&gt;我々はDSMSがデータベースシステムもカスタム指向技術（訳注：汎用化を考えずにカスタムすることを前提とする技術）をも凌駕し、良いパフォーマンスを出すことを明らかにした。これは下記の特徴による。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;ネイティブに時間をハンドリングできること（時間代数による動作・処理）、及びウィンドウ処理のような時間概念設計をサポート&lt;/li&gt;
&lt;li&gt;インメモリ動作による高性能性&lt;/li&gt;
&lt;li&gt;CQ結果のインクリメンタル処理（訳注：「管理の容易性」項で述べられたこと）の実現&lt;/li&gt;
&lt;/ul&gt;それゆえ、DSMSはとりわけ金融工学アプリケーションに向いている。DSMSは根本的にプッシュ型モデルやイベントドリブンモデルといったデータベースと異なるモデルを採用する一方、データベースから有益なアイデアを活用している。例えば、宣言的クエリの枠組みやスキーマによる強い型付きデータ型、性能向上のためのインデックス活用などである。本論文では、実際に金融工学アプリケーションへDSMSを適用し、その実施例から得られた知見により、ストリーム処理システムの詳細な概観を提供する。さらに、読者に対して（リアルタイムであってもオフラインであっても）時系列データに対する複雑な継続クエリの作り方及び実行方法を実例を交え説明する。&lt;br /&gt;
以降では、セクション II にて監視-管理-マイニングのループであるM&lt;sup&gt;3&lt;/sup&gt;サイクルに合わせて、オンライン・オフラインにおけるDSMSの利用法を議論する。続けて、先に紹介したクエリの実行例を用いてDSMSの能力と利点を説明することで、金融工学におけるDSMSの活用事例を通して様々な側面を説明する。セクション III では、DSMSの入出力に関して具体的に述べる。セクション IV はDSMSの基本操作を、セクション V はユーザ定義操作の制御方法について議論する。セクション VI では、分割処理や複数入力データの相関といった操作に関して議論する。セクション VII はDSMS利用の補助となるソフトウェアツールについて述べる。セクション VIII は様々なDSMSの内部設計特徴を述べ、セクション IX はDSMS例としてMicrosoft StreamInsightを紹介する。最後にセクション X にて結論をまとめる。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;II. 監視-管理-マイニングサイクル&lt;/h3&gt;ビジネスドメインに関わらず多くのアプリケーションシナリオにおいて&quot;時間&quot;は重要である。ビジネスドメインにおいてどれだけ時間が重要であるかをより理解するために、広く顧客に対して行った調査結果を紹介する。この調査結果は金融関係だけでなく非金融関係業界も含まれる。この調査は、特定ドメイン毎に関心のある時間の範囲を示している。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVD1NXUxxiFbPwl4iOXkV-IWFc9Hi_zGnOgxQFmgfUVv-R4dtNy9EUldMqF50amh2QOSbY0q-4SVc-nFziCjAcg8B0qKkgI5sNIjE8-ZC6E4FcUrw2Aq7_EYe432EPm0j7RrYuk1zEehke/s1600/Fig.4+the+value+of+time+in+analystics.png&quot; id=&quot;fig3&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVD1NXUxxiFbPwl4iOXkV-IWFc9Hi_zGnOgxQFmgfUVv-R4dtNy9EUldMqF50amh2QOSbY0q-4SVc-nFziCjAcg8B0qKkgI5sNIjE8-ZC6E4FcUrw2Aq7_EYe432EPm0j7RrYuk1zEehke/s400/Fig.4+the+value+of+time+in+analystics.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図3 分析における時間の価値&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;しばらく金融アプリケーション外のスコープについて議論するが、&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7457791004653031882#fig3&quot;&gt;図3&lt;/a&gt;は様々なビジネスドメインにおける調査結果を示している。過去のトレンド分析を行うアプリケーションは過去の複数月〜複数年の期間のデータを利用して、分析対象のモデルやプロフィール、スケッチ、ユーザの振る舞いや株価、性能計測値のトレンドを構築する。事業予測アプリケーションは、日〜月の範囲のデータを対象とする。興味深いことに、いくつかのビジネスドメインは秒〜分の範囲のデータを価値を生む重大なデータとして扱っている。製造業はそのようなドメインの1つであり、センサにより監視される製造ラインの故障検知は秒〜分の範囲のデータのみが許容される。同様にWeb分析やオンライン広告配信システムはユーザがWebを閲覧している時に的確な広告を配信するために、（最新のクリック情報といった）現在のユーザの振る舞い情報を活用する&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7457791004653031882#ref1&quot;&gt;[1]&lt;/a&gt;。ヘルスモニタリングや電力施設やスマートグリッドにおけるモニタリングなどのアプリケーションはリアルタイムもしくはリアルタイムに近い早さでの意思決定を必要とする。&lt;br /&gt;
本論文のテーマである金融ドメインに話を戻すと、金融アプリケーションは全てのタイムラインにまたがる（訳注：これは流石に贔屓な表現だと思う。次に続く根拠、例えばモデル構築などはどのドメインでも同じことが言える）。例えば、取引モデルを構築するには過去数年のデータを対象とし、一方でリスク管理アプリケーションは最新の株式値動きに従って様々な株価の変化パタンを検知する。同様に、金融商品レコメンドシステムはお勧め銘柄の配信や取引の提案のために魔法のような手法により、過去と未来、及びそのブレンド情報を組み合わせる。とりわけ、アルゴリズム取引では監視対象銘柄の過去値動きと現在の値動きから示されるパタンを考慮して取引をお勧めする。具体的に、現在の株式状態と類似した状態の過去データを探索し、過去の取引をガイドラインに未来を予測する。&lt;br /&gt;
（訳追加：突然的に話題が変わるが）意思決定システムやレコメンドシステムにおけるコアコンセプト（訳追加：コアコンセプト、つまり戦略目標を達成するための手段（プロセス））を定量化するために、重要業績評価指標（KPI:Key Performance Indicator）が良く利用される。KPIは意思決定やレコメンドそのものを実行する前に評価され、（訳追加：ユーザにとって最も重要なコンセプトやポリシーに設計した業務プロセスが適合するかどうかを検証するために、プロセスの）価値や評価、効果を定量化するために用いられる &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7457791004653031882#ano3&quot;&gt;*3&lt;/a&gt;。特に、下記質問に回答する必要がある。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;どのKPIが興味深く、監視環境に関して適切に記述されているか？&lt;/li&gt;
&lt;li&gt;特定のKPIが与えられた時どのような行動をとるべきか？&lt;/li&gt;
&lt;/ul&gt;上記の質問の答えはドメイン毎に特異であり、またその導出は困難を極める。これはドメインの専門家が数年かけて得られた結果だからである。しかしこの困難性に反して、我々はこのセクションの後半で述べるように、意思決定やレコメンドシステムの設計やデプロイをDSMSにより容易化する方法を提案する（訳注：さすがにこれは言い過ぎである。デプロイに関しては同意するものの、本セクションの後半を読めば分かるがアプリケーション設計やKPIの設計にDSMSが寄与できる箇所は少ない。DSMSを導入しても専門家レスになるとはまったく思わない方が良い）。DSMSの詳細を述べる前に、まず過去数十年における金融ドメインのいくつかのトレンドと事実を紹介する（約追加：KPIとは分析といった業務プロセスそのものを評価するための指標、項目であって、≠クエリであり、≠株価アラート用しきい値である。例えば、あるクエリがあるしきい値以上の株価で購入すべき関連銘柄をアラートイベントとして出力するものとする時、その関連銘柄を実際に購入した際の利益を評価するための指標がKPIである）。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;A. トレンドと事実&lt;/h3&gt;ハードウェアとソフトウェアの進歩、とりわけネットワークの進歩によりデータ獲得コストは無視できるようになった（訳注：センサ情報の獲得容易性や証券取引所で発生したデータをネットワークを介して低レイテンシに獲得できるなど）。同様に、データストレージデバイスの巨大化により、生データの保存コストは減少し続けている。一方で、CPUの高速化やクラウドコンピューティング、並列・分散コンピューティングの恩恵を得られずデータ演算コストは無視できるほど減少していない。さらに、システムへ入力され保存されるデータは平常時においても大容量となっている。この大容量データのストレージからの読み込みにかかるコストはデータ到着率の増大と共に増加し続けており、これは深刻な問題である。つまり、これら技術の進歩（データ獲得やデータ保存の容易化）が生み出した効果は大容量アーカイブの生成に留まる。データ読み込みに大きなコストが発生するために、データアーカイブに保存されたデータは結局処理されず、最終的にはデータ獲得そのものを控えるようになるかもしれない。&lt;br /&gt;
幸いにもオンザフライで処理することでデータ処理性能を増大させることができるため、DSMSではデータ読み込みコストを無視することができ、&quot;ワイヤ上のストリーム（訳注：ワイヤードロジック上の遅延なし処理）&quot;のようにデータを処理できる。セクション I で紹介した図2は先に言及した金融ドメインにおけるキートレンド（データ読み込みコストの上昇など）とDSMSのいくつかの利点をまとめている。注目すべきは、図2ではキートレンドとDSMS利点とともに&quot;監視-マイニング-管理&quot;を示すM&lt;sup&gt;3&lt;/sup&gt;サイクルが描かれていることである。（訳追加：ここから訳での追加箇所が多数出現することを先に謝罪する）このM&lt;sup&gt;3&lt;/sup&gt;サイクルコンセプトを適用したDSMSは、継続的にKPIを観測する（訳注：「KPIとなるデータ、もしくはKPIを導出できるデータを観測する」ことを「KPIを観測する」とする）。それにより、観測対象環境の振る舞いの変化に追随でき、同様の変化を見せるビジネスニーズの変化にも追随できる。M&lt;sup&gt;3&lt;/sup&gt;サイクルにおいて、DSMSは予め設定された KPI を観測し（訳注：例えば金融ドメインにおいては「DSMSは予め設定された&quot;DSMSに入力される株式数&quot;や&quot;設定しきい値の妥当性を判断するためのしきい値到達率&quot;といったKPIを観測し」となる。なお、&quot;株式購入成功率&quot;などはKPIでなく重要目標達成指標（KGI: Key Goal Indicator）である）、KPI により誘発されたアクションによりアプリケーションドメインを管理し（訳注：「人でもシステムでもKPI をチェックした結果、別のKPIに変更するとかのアクションを実施することで、アプリケーションを管理し」という意味だと思われる）、興味深い入力データパタンやより良いKPIを得るためにマイニングし、（訳追加：監視-管理-マイニングのサイクルを継続的に回すことで）時間の経過とともにDSMSシステムは学習して入力ストリームデータを効率的に活用することが出来るようになる（訳注：つまりより良いKPIが得られるということ）。次の章では我々は監視-管理-マイニングのM&lt;sup&gt;3&lt;/sup&gt;サイクルにおけるDSMSの役割を詳細に述べる。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;B. DSMSの2つの役割とそのアプローチ&lt;/h3&gt;監視-管理-マイニングのM&lt;sup&gt;3&lt;/sup&gt;サイクルの実践にあたるDSMSの役割、及びシステムのデータフローを図4に示す。図4では5つの重大なステップをハイライトしている（図では番号付けされた矢印として描かれている）。これらのステップの概略を下記にまとめる。&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;監視と蓄積：リアルタイムに入力されるストリームデータはデータストアに格納される。通常、運用目的や法遵守を目的に多くの企業や機関は数年から数ヶ月はデータを維持する。このステップはDSMSの範囲外であり、別システムにより過去データのアーカイブを実施する。&lt;/li&gt;
&lt;li&gt;マイニングと設計：過去データはDSMSにより再生され、過去データから興味深いパタンがマイニングされ、また、ビジネス基準に照らし合わせて良い、意味のある、効率的なKPIが設計される。この&quot;学習&quot;フェーズにおいては（1章で述べた）DSMSの仕様による容易性や完全性によっていろいろなKPIが生み出されテストされる。&lt;/li&gt;
&lt;li&gt;デプロイ：（ステップ2で述べた）生み出されたKPIを出力し、その中から選択されたいくつかのKPIが、実際にリアルタイムなストリームデータを処理するDSMSインスタンスにデプロイされる。&lt;/li&gt;
&lt;li&gt;管理と利益出力：リアルタイムにDSMSはKPIを観測し、KPIにより誘発されるアクションに従ってアプリケーションを管理する。このステップは&quot;管理と利益（出力）&quot;と呼ばれる。これは、DSMSの特徴である低レイテンシと高スループットにより、DSMSがリアルタイムに有益なアクションを起こすことができるためである（訳注：「人でもシステムでもKPI をチェックした結果、別のKPIに変更するとかのアクションを実施することで、アプリケーションを管理する」という意味であれば人の作業による遅延等も考慮すべきである）。&lt;/li&gt;
&lt;li&gt;フィードバック：（イベントのタイムラインに沿って出力されるKPIの形式に従った）リアルタイム処理の結果出力はデータストアにもフィードバックされ格納される（訳注：つまり入力されるイベントはもちろん現在のクエリの実行結果イベントもデータストアに格納される）。これらの（データストアに格納される）KPIの値は、最新のサイクルM&lt;sup&gt;3&lt;/sup&gt;サイクルにおけるKPIがどれほど記述的（客観的）に妥当かを明らかにするために分析される。&lt;/li&gt;
&lt;/ol&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguTLEXdt1l8iu-NjoiMobIXXm6C4k97vZOBLLC2h39u_lyd4p6dr8DKDu8qHmTZh5UrQeRguNvsgk0fWjF_xf9ZxPDOz6zmrSG_SPASAYXPEK-6aONdo9h_cWsdUjuaH0Z4sGgN28K7KYx/s1600/Fig.4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;232&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguTLEXdt1l8iu-NjoiMobIXXm6C4k97vZOBLLC2h39u_lyd4p6dr8DKDu8qHmTZh5UrQeRguNvsgk0fWjF_xf9ZxPDOz6zmrSG_SPASAYXPEK-6aONdo9h_cWsdUjuaH0Z4sGgN28K7KYx/s400/Fig.4.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図4 DSMSを経由する過去データとリアルタイムデータのデータフロー略図&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;2巡目以降の&quot;マイニングと設計&quot;フェーズ（ステップ2）ではさらに最適化されたKPIが導出され、さらに効果的なKPIをも考え出されるだろう。その際は監視-管理-マイニングサイクルは再度初期化され実行される。&lt;br /&gt;
DSMSが監視-管理-マイニングサイクルにおいて2つの役割を担うことに留意する必要がある。DSMSは過去データとリアルタイムデータの両方に適用される。過去データに関して、DSMSは興味深いパタンのマイニングと効果的なKPIの設計支援をするための学習フェーズとして利用され、リアルタイムデータに関しては（過去の設計された）最新のKPIを観測し、KPIにより誘発されるアクションを利用して環境（アプリケーション）を管理するために利用される。継続的な監視-管理サイクルは基本的なストリームデータの振る舞いにおける変化への適応性・追随性を保証する。これはつまり、新たなビジネス要件への柔軟性を保証することと同義である（訳注：つまり、検証フェーズは同時に学習フェーズであるということ）。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;III. ストリームシステムの入出力&lt;/h3&gt;従来のデータベース管理システム（DBMSs: Data-Base Management Systems）に関する多数の技術的な見解から、DBMSは2つの重大な要素を持つことがわかる。ストレージエンジンとクエリ処理エンジンの2つである。データの発生元に関係なく、データは最終的にストレージエンジンにより&quot;最適な&quot;フォーマットでセカンダリストレージデバイスに格納されインデックス化される。クエリ処理エンジンはまずストレージエンジンからデータをロードし次にクエリを実行する。データはクエリパイプラインを通して1つの演算子から別の演算子に移動し、クエリ処理結果がクエリユーザに対して出力される。それゆえ（従来のデータベースから）ロードされたデータはストレージエンジンを経由する、もしくはストリームエンジンだけを経由する。また、クエリの入出力となるデータは潜在的に巨大であるが、同時にイベントとなるデータの格納は有限である。ここで、ストリーム指向なデータ利用へのパラダイムシフトやリアルタイムで低レイテンシな要求への増大という動向により、ストレージエンジンという考え方は忘れなくてはならない。セカンダリストレージデバイスのデータを利用可能状態とし（訳注：つまりメモリにロードし）、クエリ処理アプリケーションにロードするためのコストは、前述したリアルタイムな低レイテンシ要求への障壁となる。さらに、継続的クエリは無限に（現実には高頻度に）入力されるストリームデータを対象とするが、実際にはシステム（訳追加：カーネル空間）上の入力バッファへ流れるイベントをクエリ処理アプリケーションが（訳追加：ユーザ空間に）コピーし、コピーデータを処理するという流れとなる。それゆえ、ストリームクエリ処理エンジン（訳注：継続的クエリ処理エンジン）はリアルタイムにストレージマネージャ（ストレージエンジン）を介さずにストリームデータを処理する必要がある。典型的に、DSMSの入力アダプタ（訳注：入力I/F用アダプタ・ラッパー）はプッシュ型のメカニズムを採用する。例えば、センサや株価情報といったストリーム情報元からのデータが入力アダプタによりDSMSにプッシュされ、アプリケーションに渡される。同様に、出力アダプタはDSMSからクエリユーザに対してクエリ結果をストリームとして出力する。&lt;br /&gt;
アダプタはストリームソースとDSMSの間に置かれ、両者間のやり取りを平準化する（訳注：つまりバッファとしての機能も提供する）。このような機能を提供するにあたり、アダプタは複数の機能の提供と、いくつかのプロパティ（属性）の維持を実施することが期待される。なお、鍵となるこれらの機能と特性は、このセクションの後半にまとめられる。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;A. アダプタの機能&lt;/h3&gt;入力アダプタは、ストリーム情報源の属性を把握し、その情報源から出力されるストリームイベント （＝ストリームデータ）を適切に処理するためにいくつかのステップを踏む必要がある。アダプタは発生したイベントと共に、最適化を目的にストリーム情報源の基本属性ををDSMSに渡す（訳注：属性メタデータを利用することで、現在のストリームデータがどの情報源から来たのかというような情報を得ることができ、その結果情報源に特化したデータ処理、例えばイベントデータのフォーマットの把握などを行うことができる、という意味で「最適化」という表現を使っていると思われる）。また、DSMSの出力はストリームデータであり、入力ストリームデータとストリーム性という類似性を持つため、類似するステップが出力アダプタに関しても言える。それゆえ、出力アダプタはDSMSからの出力結果であるストリームデータ（イベント）を受信側ノードもしくはクエリユーザに渡す。この時、出力アダプタはストリームの属性も同様に渡す。&lt;br /&gt;
下記にアダプタに必要なステップをまとめる。&lt;br /&gt;
&lt;b&gt;イベントのフォーマットの把握&lt;/b&gt;&lt;br /&gt;
アダプタは情報源から生成されたイベントのフォーマットを理解し、体系化されたイベントフォーマット情報を提供する必要がある。例えば、株のティッカーを扱うアダプタは2つのフィールド（ティッカーシンボルの文字列と10進数で表現された価格）を含むスキーマを持つストリームデータを（DSMSに）提供するだろう。&lt;br /&gt;
&lt;b&gt;イベントへの時間的な属性の付与&lt;/b&gt;&lt;br /&gt;
各イベントは時系列上の特定の時間にて発生し、限られた期間（もしくは永遠に）継続するかもしれない。それゆえ、（訳追加：DSMSがアプリケーション時間でイベントを扱うためにはイベントの発生時刻を把握することは重要であり）アダプタはイベントの時間的な属性として、1つもしくは複数のタイムスタンプをスキーマに付与する必要がある。さらに厳密に言うと、アダプタがDSMSに通知すべき時間情報として3つのフォーマットが考えられる。&lt;br /&gt;
&lt;ol&gt;&lt;li type=&quot;a&quot;&gt;特定の時間に発生したイベントは、発生時間（タイムスタンプ）とティッカーシンボル文字列、価格の属性を持つ。このフォーマットではタイムスタンプは株価が報告された瞬間の時間を指す。このフォーマットにて表現されるイベントは「ポイントイベント」として参照される。&lt;/li&gt;
&lt;li type=&quot;a&quot;&gt;既知の期間にまたがり発生するイベントは、開始時間（Vs DateTime）と終了時間（Ve DateTime）、ティッカーシンボル文字列、価格の属性を持つ。Vs と Ve はそれぞれ有効な期間の開始時間と終了時間を意味し、有効な期間とは報告される株価が有効である期間を意味する（訳注：始値と終値までのイベントは1日における市場の開始から終了までの期間に発生することは既知である。それゆえ、このイベントは短期の期間を表現するイベントである）。このフォーマットのイベントは「インターバルイベント」として知られる。&lt;/li&gt;
&lt;li type=&quot;a&quot;&gt;予め不確定な期間に発生するイベントは、開始時間（Vs DateTime）とティッカーシンボル文字列、価格の属性を持ち、後々に対象イベントの期間が終了し、終了時間を出力可能な状態となった際に、終了時間（Ve DateTime）とティッカーシンボル文字列、価格の属性情報が別途追加される（訳注：本イベントは &quot;end signal&quot; がDSMSに到達して始めてイベントして成立する。つまり、開始と終了を示すシグナルはイベントではない。但しこの辺りは実装依存かと）。この開始・終了シグナルにて表現されるイベントは「エッジイベント」として参照される（訳注：予め期間が定まっていない期間とはインターバルイベントのように外因で決められることもなく、ユーザもどの程度の期間を設定すれば良いか判断できない場合に指定される期間であろう。例えばある銘柄の価格指定売買にチェックされるイベントなどが該当する。それゆえ、このイベントは比較的に長期の期間を表現するイベントである）。&lt;/li&gt;
&lt;/ol&gt;株のティックは特定の瞬間に発生するポイントイベントの一例である。一方、株価は2ティック間のインターバルイベントとして表現できる（訳注：勘違いしそうだが株などはティックにより変動するため2ティック間は株価は一定値である）。さらに、ある価格に株を売るというユーザの意図はエッジイベントに反映される。このエッジイベント処理はトランザクションの開始と共に直ぐに開始され、終了時間は予め分からない。イベントは株の売却といった処理が実行されるその時、つまりイベントの終了が通知されるその時までオープンされたままの状態を維持する。&lt;br /&gt;
&lt;b&gt;不正イベント制御とイベントキャンセル&lt;/b&gt;&lt;br /&gt;
アダプタはイベント到達時にDSMSに/からイベントを通知する/される。また、アダプタは安定性保証のために情報源に対して応答する。安定性保証とは生成されたイベントが確実なものかどうか、キャンセルされるかどうか、イベントの値が後に変更されるかどうかを確認することである（訳注：要はTCP層におけるACKの拡張という位置づけ）。イベントが遅延したりキャンセルされる際、入力情報源からアダプタにその旨が通知される。アダプタは安定性保証のために中断制御パケット（パンクチュエイション：punctuation）を生成し、入力ストリームに生成した中断制御パケットを挿入すべきである。DSMSは受信した中断制御パケットにより、出力における正確性や安定性保証を提供する（訳注：データを補正するとか、中断中は出力を一時停止するとか）。&lt;br /&gt;
&lt;b&gt;ストリームデータ配信モデルの把握（プルモデルとプッシュモデル）&lt;/b&gt;&lt;br /&gt;
アダプタの配信方法はストリームデータ情報源とDSMSのインタフェースに依存することから、プル型とプッシュ型の両方のモデルが採用されるであろう。一般に、リアルタイムなイベントは非同期にプッシュされる一方、過去のイベントは同期的にプルされる。DSMSにデータがプッシュされる時、イベント到着率がDSMSの処理能力を超える場合に、アダプタは許容できるイベント到着率を（アダプタの制御フローAPIを経由して）DSMSと調停しなければならないだろう。&lt;br /&gt;
&lt;b&gt;プッシュ通信のリアルタイム化&lt;/b&gt;&lt;br /&gt;
DSMSは、そのデータ処理のためのパイプラインにおいて、入力データをできるだけフィルタリングしたり削除したりして、データ処理を最適化する。このフィルタリングやデータ削除（の指示）を最も早く実行できるのは（訳追加：ストリームデータ情報源とDSMSの間に位置する）入力アダプタである。それゆえ、フィルタリング調整機能を持ち、（訳追加：後続のDSMSに対して）プッシュダウンを提案できる（訳注：アダプタから受信したデータをスタックに入れるプッシュダウン方式をDSMSが採る場合に、既にDSMSに渡した最新データをスタックから取り出し削除することを提案する、と同）アダプタが望まれる。このような（訳追加：オーバーフローデータの破棄（フィルタリング）や不正データの削除といった）アダプタの機能により、DSMSは有効なストリームデータのみをリアルタイムに処理することが可能となる（ストリームデータ情報源が出力するデータと、DSMS入力データが可能な限り同一となる）。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;B. アダプタの高可用性と高スケーラビリティ性&lt;/h3&gt;前述したアダプタの機能に加えて、（訳追加：分散環境におけるアプリケーション等の）ロバストな配置に関して2つの性質が求められる。まず、アダプタには高い可用性が求められ、さらに高い可用性を持つDSMSと接続することが求められる。ここで、高い可用性を持つアダプタを高可用性システム上に持つことと、高可用性システムと通信する能力は別の問題であることに注意すること。高可用なアダプタは障害（例えばネットワーク障害）に対して柔軟であり、障害が終了した時点で障害にて中断していた処理をレジュームする機能を持つ。他方、高可用なDSMSは障害からの復旧能力を持つ。しかし、そのような復旧は入出力アダプタのヘルプなしに実現できない。障害からの復旧のために、DSMSは以前にシステムへ出力したストリームの一部をリプレイするように、入力アダプタに要求するかもしれない。もしくは、予期しないエラーを回避するために破棄するかもしれない。さらに、DSMSは、障害により不意に中断され部分的にしか出力できていない出力ストリームを破棄するよう、出力アダプタに要求するだろう。&lt;br /&gt;
次に、アダプタは高性能であることが求められ、スケーラブルなDSMSとの接続をサポートすることが求められる。高性能アダプタとは継続的クエリの実行の際にボトルネックとならないアダプタである。マルチスレッドやバッファ機能、ストリーム多重化（訳注：スケーラブルDSMSへ入力データを複数のDSMSサーバへ転送する機能。コピーであっても分割データであっても）などが高性能アダプタが持つべき技術である。さらに、スケーラビリティシステムであるDSMSと接続し高性能を実現するために、アダプタ自身もスケーラビリティ性を持つべきである。このようなスケールアウトシステムを採用する場合、入力アダプタはインプットストリームを分割し複数のノードに配信することが求められる（それぞれのノードはDSMSのインスタンスとして動作している）。また、出力アダプタは複数のノードから出力されるストリームを収集し、マージし出力ストリームと再構成することが求められる。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;C. 組込み式とカスタム方式のアダプタ&lt;/h3&gt;最小レベルの品質を達成することを保証できるアダプタを開発できるよう開発者を支援するために、商用のDSMSは幅広く利用されるデータを対象とする組込み式のアダプタと、サード弁だが特定ドメイン向けのアダプタを開発できるようなメカニズムを提供する。入力アダプタの一例として、&lt;br /&gt;
ストレージメディアからのデータ再生（例えばテキストファイルやイベントログ、データベースなどの再生）が可能であり、ストリームフォーマットに変換しDSMSに渡すモジュールなどが先の提供される入力アダプタの一例である。また、Webサービスの生データを読込む入力アダプタなどは別の興味深い例である。出力アダプタはテキストファイルやイベントログ、データベースもしくはWebサービスデータに出力するメカニズムを提供する機能が求められるようである。さらに面白いのは、ストリームのトレンドや本質的な特性を観測できるようにグラフィカルに見える化するアダプタもある。セクションVIIでは商用DSMSの一部に採用されている見える化機能を持つアダプタを紹介する。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;続きは&lt;/h3&gt;次のポストにまとめます。&lt;br /&gt;
&lt;br /&gt;
&lt;div id=&quot;ano1&quot;&gt;*1: 過去の株価などのデータを使った分析・予測結果と、実際のデータを比較・検証すること&lt;/div&gt;&lt;div id=&quot;ano2&quot;&gt;*2: 電力平均分配のこと。電力需要量が供給量を超え、過負荷により供給エリア全体が停電するのを防止することを目的に予め決められた場所への供給を停止すること。つまり、一定の期間で平等に電力を均すこと。ここでは、特定データを破棄するなどとして利用すると思われる。&lt;/div&gt;&lt;div id=&quot;ano3&quot;&gt;*3: ビジネスにおいて定められる戦略目標に対して実行される具体的な業務手段が、狙い通り遂行されているかを計測するために用いられる指標において、最も重要な指標を重要業績評価指標と呼ぶ。&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceromondo.blogspot.com/feeds/8242694472822367287/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ceromondo.blogspot.com/2012/10/data-stream-management-systems-for.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/8242694472822367287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/8242694472822367287'/><link rel='alternate' type='text/html' href='http://ceromondo.blogspot.com/2012/10/data-stream-management-systems-for.html' title='Data Stream Management Systems for Computational Finance の前半（セクション I 〜 III）'/><author><name>goemondo</name><uri>http://www.blogger.com/profile/17435609166287599853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBzzt2y_e87Gq_DyMOP7hLXjtzTK0S-UI-KcbukCTAe68exHWX3dwUwrXC1u6f0jRaJzF8-DbBz8Mxokx38sT-4s94c4VvJ2By6g6075v6WksNTNZsddzCT4p-IYM4Sg/s220/profile.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglHztjVDzTKvAiESNNjsl_va455XGPs7uPu75m3103VIwNCmk0aRtXVJLgffcOV6cbRiAjm2FiT3q8-I-TxDRNPjyoquH3p9pJnTO6ddl-Y8_k-YrusKRd7Ly6u6VnCL-fShwkXMaR7iHV/s72-c/Fig.1+Scenarios+for+Event-Driven+Applications.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7457791004653031882.post-720510085959154583</id><published>2012-10-18T22:26:00.003+09:00</published><updated>2012-10-23T21:29:33.146+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="neural network"/><title type='text'>Lp Pooling</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;h3 class=&quot;chaptitle&quot;&gt;ニューロンプール&lt;/h3&gt;基本的にこの章は[1]をベースにまとめていますが、所々別の文献や勝手な想像を交えています。&lt;br /&gt;
人間の身体には約1000万の感覚ニューロンと200億の介在ニューロン（一般に知られるニューロン）、500万の運動ニューロンがあると言われている。ニューロンは個々で活動するだけでなく、空間上の近傍性を持つ局所的なニューロンが集合して活動する場合がある。このニューロンの集合をニューロンプールと呼ぶ。ニューロンプールはグループを単位として、ニューロンプールとしての機能を持つことになる。ニューロンプールは脳や脊髄のいろいろな領域に散見され、よく知られるものとして α運動ニューロンプール（alpha mortor neuron pool：筋組織に直接接続される下位運動ニューロンにおけるニューロンプール）があるが、嗅覚や視覚などの感覚野にも存在するらしい。なお、ニューロンプールを構成するニューロン数はだいたい数百から数千であり、ニューロンプールには興奮性ニューロンも抑圧性ニューロンも含まれる。&lt;br /&gt;
先にニューロンプールはそのグループを単位に機能を持つと述べたが、それはニューロンプールを構成する全てのニューロンが特定の「限定された」入力元と出力先を持つためである。例えばあるニューロンの軸索が複数のニューロンとシナプスを生成すると、当該ニューロンを限定された入力とするニューロンプールと同等の接続形態となる。なお、プールが連結する場合も想定される。&lt;br /&gt;
当然、ニューロンプールに複数の経路から入力されることもあるだろう。その場合は複数入力の同時活動性と、複数経路とニューロンプール内のニューロンへの接続の重複性を考慮すべきである。例えば、2入力が同時に活動した際に、複数入力が1つのニューロンに接続されている場合と、複数入力が各ニューロンに独立に接続している場合では、活動刺激が到達するニューロンの数が異なる（重なってるだけ刺激到達ニューロンが少なくなることを「閉塞」、刺激の大きさに関して、重なっている方が小さな刺激でも確実に活動刺激が届くことを「促進」と言うらしい）。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;ニューロンプールの効果&lt;/h3&gt;ニューロンプールの効果はそのニューロンプールの接続状態からある程度推定することができる。&lt;br /&gt;
まず、特定の入力がニューロンプール内のニューロンに拡散される。この拡散性により、単なる分散処理でなく「並列性（同時処理性）」が見られるようになる（ニューロン間の距離やシナプス結合強度の大きさ、もしかしたらサイズの原理で言われるようにニューロンのサイズによって、同時性は時系列上でズレるかもしれない。どうも工学的なニューラルネットワークの研究ではその時代背景から同期回路をベースに考えられており、ズレを許容する非同期回路のような発想がない。実はこの発想が重要でないか、なんて思ったり）。&lt;br /&gt;
次に、ニューロンプール内のニューロンが様々な活動をしても結局同じニューロン（集合）に出力されることから、集中性がある。例えば、腕を大きく動かそうが小さく動かそうが、一定の状態で腕を保持しようが運動ニューロンは類似した活動をする。つまり多少の「誤差の影響を受けない」ようになり、結果、ニューロンプールによりニューロン活動に「恒常性」が見られるようになる。&lt;br /&gt;
&lt;br /&gt;
（ここからは勝手な想像で何かの文献を参考にしていないが）ニューロンプールの接続元ニューロンとニューロンプール内の各ニューロンにヘブ則が成立し、シナプス結合強度が高いとすると、1つのニューロンの活動が多数のニューロンの活動に増幅されることになる。つまり、ホップフィールドネットワーク的に表現すると高エネルギー状態となり、プール内に保持される情報量が多くなる。このように情報量を多くすることがニューロンプールの目的であるかはわからない（ニューロンプール内の情報量を多くするように学習することが正しいとは限らない）が、ニューロンプールとして「アンプ機能」を持つとは言えそうである。この結果、例えば α運動ニューロンプールの活動が高まることで筋肉力が高くなるなど、があるかもしれない。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;Lp pooling&lt;/h3&gt;Max-pooling については &lt;a href=&quot;http://ceromondo.blogspot.jp/2012/09/convolutional-neural-network.html&quot;&gt;Convolutional Neural Network&lt;/a&gt; にてまとめたが、Lp pooling の&quot;プーリング&quot;と同じ意味なのだろうか、そもそも&quot;Lp&quot;とは何だ。&lt;br /&gt;
Max-pooling は階層型ネットワークにおいて、後層の（複数の）ニューロンに接続される前層の複数のニューロンのうち、最大の値を持つニューロンの値を後層のニューロンの出力値とする方法である。つまり、前層の複数のニューロンの特徴を、その複数のニューロン内の&quot;最大値&quot;とみなすよう、サブサンプリングする。ニューロンプールとして捉えると、前層の複数のニューロンにより構成されるニューロンプールから、&quot;集中的に&quot;そのプールが持つ最大値を出力する構造と捉えることができる。つまり、ニューロンプールの集中性を再現している。例えば、前層のニューロンの持つ値がほとんど0であり一部のみが有効な値を取るような特性を持つ、つまりスパースな特性を持つデータセットが対象であれば、後述する average-pooling などと比較し、無駄な入力を高効率に分離することができる。つまりノイズフィルタとして高い性能を持つと言えるし、（最大値に多少の揺れはあるかもしれないが）出力は恒常性を持つと言える。&lt;br /&gt;
従来のプーリング手法としてもう一つ有名なのは average-pooling である。このプーリング手法は max-pooling と比較して、前層の複数のニューロンから後層のニューロンに対して、集中的に出力する構成は同じである。但し出力する値が最大値でなく、その名の通り平均値となる。ニューロンプールとして捉えると、前層のニューロンの総和に揺れがなければ、ノイズフィルタとしても恒常性も満足できる。&lt;br /&gt;
さて、Lp pooling は下記式で表現される [2]。ここでOは出力値を、Iは前層のニューロンの値を、Gはガウス関数を示す。&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;&quot; class=&quot;&quot; id=&quot;blogsy-1349439440000.595&quot; src=&quot;http://www.codecogs.com/eq.latex?\O=\left\(\sum_{j=1}^{n}\sum_{i=1}^{m} I\left\(i, j\right\)^{p} * G\left\(i, j\right\)\right\)^{1/p}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
つまり、Lp pooling は（こんな言葉があるかは知らないが）p乗平均偏差を出力値としている。例えば p=2 の時は二乗平均偏差が出力値となり、これを L2 pooling と呼ぶ。他のプーリング手法との相対的な Lp pooling の特徴は2つあり、一つは値の大きさにのみ着目し方向（プラスかマイナスか）を無視することである。例えば画像のRGB値といった正の値のみを扱う場合に有効である。二つ目は、前層の各ニューロンの値がp乗となるため、大きな値を持つニューロンを重要視し、小さな値のニューロンの影響を減少できることである。但し MAXプーリングのように小さな値のニューロンの影響をまったくなくすわけではない。恐らくこの二つ目の性質により、average-pooling より学習収束までの速度が向上し、max-pooling より局所解に陥る可能性が低くなる。&lt;br /&gt;
また、実は Lp pooling は max-pooling も average-pooling も包含する位置付けであると言える。p=1 の時は average-pooling であり、p=∞ の時は max-pooling となるためである。なお、[2]によると、取り扱うデータセットに依存するだろうが、p=2, 4, 12 の時にパフォーマンス（正解率）が高い模様（なんでp=12なんて中途半端な値でベストパフォーマンスが得られるのだろう...もしかしたらこの辺はデータだけに依存するのでなく、各層の実装方法、例えばプーリング層の入力サイズを 5x5 とするか 3x3 とするかなんかにも依存しそうである）。 &lt;br /&gt;
但し、平均値を取るか、最大値を取るか、p乗平均偏差を取るかは、対象とするデータセットや、どのような特性を見たいのかといった目的に依存するため、どれが優れているとは一概には言えないだろう（統計においても同じであるように）。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;まとめてみる&lt;/h3&gt;このように、ニューラルネットワークにおけるプーリング手法は、ニューロンプールの特性の出力側にのみ注目した手法であり、上記で述べた全ての手法における&quot;プーリング&quot;は同じ意味を持つ。ではニューロンプールにおける入力側の特性である&quot;並列性・同時性&quot;や&quot;（上記推測が正しいなら）アンプ機能&quot;に着目しないのか。だって基本的にニューラルネットワークでは、最もコアであるフィードフォワードニューラルネットワークであっても前層のニューロンの出力は次の層の複数のニューロンに出力されている。どちらかと言うと、ニューロンプールの入力側特性は、sparse coding や局所受容野にて再現されていると言える。もしかしたら sparse coding とプーリングが同時に利用されるのは両者がそろって始めてニューロンプールとなれるからかもしれない。&lt;br /&gt;
あと、何でこの辺の技術には訳語がないのだろうか。。&lt;br /&gt;
&lt;br /&gt;
[1] &lt;a href=&quot;http://cwx.prenhall.com/bookbind/pubbooks/martinidemo/&quot;&gt;Fundamentals of Anatomy &amp;amp; Physiology, Ric Martini, Benjamin Cummings.&lt;/a&gt;&lt;br /&gt;
[2] &lt;a href=&quot;http://yann.lecun.com/exdb/publis/pdf/sermanet-icpr-12.pdf&quot;&gt;Pierre Sermanet, Soumith Chintala, Yann LeCun, Convolutional Neural Networks Applied to House Numbers Digit Classification CoRR abs/1204.3968, 2012&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceromondo.blogspot.com/feeds/720510085959154583/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ceromondo.blogspot.com/2012/10/lp-pooling.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/720510085959154583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/720510085959154583'/><link rel='alternate' type='text/html' href='http://ceromondo.blogspot.com/2012/10/lp-pooling.html' title='Lp Pooling'/><author><name>goemondo</name><uri>http://www.blogger.com/profile/17435609166287599853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBzzt2y_e87Gq_DyMOP7hLXjtzTK0S-UI-KcbukCTAe68exHWX3dwUwrXC1u6f0jRaJzF8-DbBz8Mxokx38sT-4s94c4VvJ2By6g6075v6WksNTNZsddzCT4p-IYM4Sg/s220/profile.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7457791004653031882.post-8625031725392705699</id><published>2012-10-13T21:55:00.003+09:00</published><updated>2013-05-22T08:43:05.051+09:00</updated><title type='text'>Subtractive normalization と divisive normalization</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;Hebbian Learning&lt;/h3&gt;&lt;br /&gt;
ざっくりと、ニューロンは他のニューロンとシナプスを形成し、そのシナプスを経由して伝達物質（化学シナプス）やイオン電流（電気シナプス）をやり取りする（結合する）。複数のニューロンが結合されたニューロンネットワークにおいて、シナプスでの「やり取り」の程度によりシナプス結合の強度が更新され、その結果、新しいことを学んだり過去のことを忘却したりといった学習を行うことができる、かもしれない。この仮説がヘッブの学習則（hebbian learning）である。ヘッブ則と呼ばれる場合もある。シナプス結合強度がシナプスにおける「やり取り」に影響されるということは、接続しているニューロンの活動の相関を取ることで結合強度を定式化できる（下式）。ここでεは学習速度調整パラメータであり大きければ大きいほど収束しやすい。a&lt;sub&gt;s&lt;/sub&gt; は信号の送信側ニューロン、a&lt;sub&gt;t&lt;/sub&gt; は信号の受信側ニューロンの活動（の度合い）を示している。Δw の累積を取ることで、要は積分すれば結合強度が求まる。&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;&quot; class=&quot;&quot; id=&quot;blogsy-1349439439952.0042&quot; src=&quot;http://www.codecogs.com/eq.latex?\Delta w=\epsilon a_s a_t&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;Subtractive normalization&lt;/h3&gt;さて、ヘッブ則に従うニューロンモデルにおける結合強度は（εによる遅延効果はあるものの）際限なく大きくなるか小さくなる（ニューロンの取りうる値を-1, 0, 1（それぞれネガティブ、発火なし、ポジティブを意味する）とする時に、結合強度はプラスかマイナスの一方向に向かい易いということ。ちなみに、各ニューロンが 0, 1 の値を取る時 w は下記のようになり、a&lt;sub&gt;s&lt;/sub&gt;&amp;nbsp;と a&lt;sub&gt;t&lt;/sub&gt;&amp;nbsp;が1の時だけεだけ加算され、それ以外は以前の w を維持することになり、際限なく大きくなるだけである）。&lt;br /&gt;
よって、シナプス結合強度をヘッブ則で適切に設定するには w の範囲を限定するか、（十分な学習を行った後に）固定化するかといった方法を用いなければならない。&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;&quot; class=&quot;&quot; id=&quot;blogsy-1349439440024.841&quot; src=&quot;http://www.codecogs.com/eq.latex?\Delta w=\left\{\begin{aligned}\epsilon \qquad ...\ when\ a_s\ and\ a_t\ is\ 1\\ 0\end{aligned}&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
いやいや、きちんと別のルールを用意しましょうということで、いろいろなアイデアが検討されてきており、そのルールの１つが subtractive normalization（対訳はない模様）である。Subtractive normalization は基本的にヘッブ則と同様に接続ニューロン間の相関を見る。但し、接続先のニューロンに接続している全ての接続元ニューロンの影響を考慮する。接続先ニューロンの活動状況は着目している接続元ニューロンだけでなく、その他の接続元ニューロンの活動の影響も受けるので、しごくまっとうな方法である。Subtractive normalization では他の接続元ニューロンの影響を考慮するために、その名の通り全ての接続元ニューロンの活動状況の平均を、着目の接続元ニューロンの活動状況から減じる（下図）。接続元ニューロンの活動状況の平均を減じることで、平均値を基準に平行移動していることから subtractive normalization と呼ばれる。&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;&quot; class=&quot;&quot; id=&quot;blogsy-1349439440028.8992&quot; src=&quot;http://www.codecogs.com/eq.latex?\Delta w=\epsilon a_t\left\(a_s - \frac{1}{n}\sum_{i=1}^{n} a_i\right\)&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
なお、ガウス関数を利用して、期待値の和（＝平均）として下記のように記載される場合もある（G&lt;sub&gt;i&lt;/sub&gt;はガウス関数とする）。&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;&quot; class=&quot;&quot; id=&quot;blogsy-1349439440000.595&quot; src=&quot;http://www.codecogs.com/eq.latex?\Delta w=\epsilon a_t\left\(a_s - \sum_{i=1}^{n} G_ia_i\right\)&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
さて subtractive normalization は接続元ニューロン全ての活動状況の平均を個々の活動状況から減ずるために、全てのニューロンのシナプス結合強度の変化分の和（総和）は 0 となる。つまり変化分の総和は一定値となる。よって、ある接続元ニューロンの結合強度の変化分は他の接続元ニューロンのそれらと調整されることになる。つまり、ある接続元ニューロンが友達を作るには、その友達の友達との関係性をケアして、自分が仲良くなるなら他と疎遠にならなければならないということになる。&lt;br /&gt;
また、システム的にはある接続元ニューロンの変化分だけを「最適だ！」と思われる値に固定化したいかもしれない。しかし、そのような別観点・次元の評価を加えると、総和の状態が崩れることになる。つまり、全体最適か（そのまま適用するか）、個別最適か（どれかのみに着目する）のトレードオフとなる。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;Divisive normalization&lt;/h3&gt;Divisive normalization も subtractive normalization と同様にヘッブ則による制約を開放するために用意されたシナプス結合強度表現の別ルールである。Subtractive normalization が引いて正規化するなら divisive normalization（対訳なしな模様）は割ってみた、である（下式）。ここで c は 0 除算回避用である。それゆえ、0.001といった小さな値が設定される。また、母数を平均二乗偏差としているのは変化する値の強度を値の方向（プラスマイナス）に関係なく取得できるためである。&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;&quot; class=&quot;&quot; id=&quot;blogsy-1349439439969.0027&quot; src=&quot;http://www.codecogs.com/eq.latex?\Delta w=\epsilon a_t\left\( \frac{a_s}{max\left\(c, \sqrt{\mathstrut\sum_{i=1}^{n} G_ia_i^2}\right\)}\right\)&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Divisive normalization においてはシナプス結合強度の変化分の総和は一定値とならない。よって、ある接続元ニューロンは別の接続元ニューロンの値に依存しない（平均二乗偏差に依存するからまったくの独立ではない）。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;結局どっちが良いの&lt;/h3&gt;Subtractive normalization と divisive normalization の違いは下記である。なので無次元でなくて良くプラスしか値は取らず全体最適としたい場合には subtractive normalization を用いて、そうでなければ divisive normalization を用いれば良い。&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;無次元かどうか&lt;/li&gt;
&lt;li&gt;プラスとマイナスの値が取れるか&lt;/li&gt;
&lt;li&gt;接続元ニューロンに関して全体最適か独立か&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
なお、対象とするデータによっては divisive mormalization はパフォーマンスを低下させる場合もあるらしい &lt;a href=&quot;#ano4&quot;&gt;[4]&lt;/a&gt;。ここで言うパフォーマンスとは後述する検討が正しければ、学習速度（効率）ではなく正解率である。何となく実装依存な香りもするが、[4] は画像認識を研究対象としており、その入力データはデジタル画像である。よって基本的にはネットワークで扱うデータは正の値であり subtractive normalization で十分ということになる。さらに重要なのが例えばRGBの値（0〜255）をネットワークに入力するのであれば divisive mormalization で無次元化されるとネットワーク内の取りうる値が小さくなり、学習の収束が速くなるかもしれない。その影響から局所解に陥ることとなり、結果、パフォーマンスが低下したのでないかと思われる。少なくとも先のようなデータを入力し複数のステージで階層化する場合、入力側に近いステージでは subtractive normalization を採用すべきだと思われる。&lt;br /&gt;
一方で、研究[&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7457791004653031882#ano1&quot;&gt;1&lt;/a&gt;, &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7457791004653031882#ano2&quot;&gt;2&lt;/a&gt;]によると、視覚野、特にV1ではシナプス結合強度は divisive normalization により表現されており、研究[&lt;a href=&quot;#ano3&quot;&gt;3&lt;/a&gt;]のようにモデル化されている。つまり、逆説的にニューラルネットワークにおける従来の nornalization の考え方は工学的には正しくても神経学（脳のモデル化）という観点では誤りであると言える。&lt;br /&gt;
なお、ニューラルネットワークにおいて normalization 層と言われる層が用意される場合、なんとなく層に含まれるニューロン全体が正規化されるのではと思いがちだが、そうではない。あくまで上記操作が実行されるのみであり、つまり該当の層に含まれるニューロンに接続される「接続元ニューロン」の結合強度の変化分が正規化される層ということである。まぁフィードフォワードニューラルネットワークの構造から同じことなんだけど、どうしても間違って捉えちゃうんです。ニューラルネットワークの層は、組合せ回路部分（重み演算部や加算演算部）とレジスタ部分（一般に層と呼ばれる最終出力部）である、と考えると覚えやすい。&lt;br /&gt;
&lt;br /&gt;
&lt;div id=&quot;ano1&quot;&gt;[1] M Carandini and D J Heeger. Summation and division by neurons in primate visual cortex. Science, 264:1333–1336, 1994.&lt;/div&gt;&lt;div id=&quot;ano2&quot;&gt;[2] &lt;a href=&quot;http://www.cns.nyu.edu/heegerlab/content/publications/Heeger-JNeurophysiol1993.pdf&quot;&gt;D J Heeger. Modeling simple cell direction selectivity with normalized, half-squared,&lt;br /&gt;
linear operators. J. Neurophysiology, 70(5):1885–1898, 1993.&lt;/a&gt;&lt;/div&gt;&lt;div id=&quot;ano3&quot;&gt;[3] &lt;a href=&quot;http://www.cns.nyu.edu/ftp/eero/simoncelli98d.pdf&quot;&gt;E.P. Simoncelli and O. Schwartz, Modeling surround suppression in V1 neurons with a statistically-derived normalization model. Advances in Neural Information processing Systems 11, 153-159, 1999.&lt;/a&gt;&lt;/div&gt;&lt;div id=&quot;ano4&quot;&gt;[4] &lt;a href=&quot;http://yann.lecun.com/exdb/publis/pdf/sermanet-icpr-12.pdf&quot;&gt;Pierre Sermanet, Soumith Chintala and Yann LeCun, Convolutional Neural Networks Applied to House Numbers Digit Classiﬁcation, CoRR abs/1204.3968, 2012.&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceromondo.blogspot.com/feeds/8625031725392705699/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ceromondo.blogspot.com/2012/10/subtractive-normalization-divisive.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/8625031725392705699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/8625031725392705699'/><link rel='alternate' type='text/html' href='http://ceromondo.blogspot.com/2012/10/subtractive-normalization-divisive.html' title='Subtractive normalization と divisive normalization'/><author><name>goemondo</name><uri>http://www.blogger.com/profile/17435609166287599853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBzzt2y_e87Gq_DyMOP7hLXjtzTK0S-UI-KcbukCTAe68exHWX3dwUwrXC1u6f0jRaJzF8-DbBz8Mxokx38sT-4s94c4VvJ2By6g6075v6WksNTNZsddzCT4p-IYM4Sg/s220/profile.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7457791004653031882.post-9041595464479927108</id><published>2012-09-25T23:52:00.002+09:00</published><updated>2012-09-25T23:53:21.554+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="deep learning"/><category scheme="http://www.blogger.com/atom/ns#" term="neural network"/><title type='text'>Deep Learning</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;このポストは deep learning について調べたメモです。&lt;a href=&quot;http://www.iro.umontreal.ca/~bengioy/papers/ftml.pdf&quot;&gt;Learning Deep Architectures for AI&lt;/a&gt;を参考としてますが、正直全文読む気力はありませんでした。まぁ元々ざっくりと deep learning の意味が理解できればいいやという目的でもあったので。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;deep learning の定義&lt;/h3&gt;Deep learning は一つのテクニックを指す用語でない。下記を満足する deep architecture による機会学習システム全般を指している。&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;高位の問題の解決が目的であること&lt;/li&gt;
&lt;li&gt;多層構造であること&lt;/li&gt;
&lt;li&gt;階層的処理であること&lt;/li&gt;
&lt;/ol&gt;1. はまぁ複雑な問題も解決できるよ、というだけで条件ではないと思う。次の2. で示す特徴から、低位な問題にはオーバースペックなので無理して使わないようにという留意点として捉えれば良いと思う。&lt;br /&gt;
2. は1つ以上の処理を1ステージとしてパイプラインに連結することを意味する。命令フェッチや命令デコード、他いくつかの演算がパイプラインとして連結されるCPUを想定すれは良い。そして、まさに工学的であるが、学習効率を高めるために各ステージは独立に学習をさせて完成品をパイプラインとして組み上げる。なお、各ステージの入出力I/Fやは特に規定されていない。ステージ処理としてよく使われる（成功している）テクニックには制限つきボルツマンマシン（Restricted Boltzmann Machine）、どノーマルな auto-encoder、スパースな auto-encoderなどがある。&lt;br /&gt;
3. は例えば特徴抽出を目的とする場合、「高位な特徴は低位なそれを単位として定義できる」という前提で処理することである。高位の特徴と低位の特徴には必ず親子関係ができ、特徴をグラフ化すると階層構造となる。&lt;br /&gt;
つまり、構造的にも処理内容的にも「階層型」であることが deep architecture の定義である。なので、convolutional neural network や制限つきボルツマンマシン（の連結）は deep architecture に含まれる（紛らわしいがボルツマンマシンはまったく異なる）。ちなみに convolutional neueal network の局所受容野は横のローカル性と言え、deep learning は縦のローカル性と言える。&lt;br /&gt;
&lt;br /&gt;
そして deep learning は deep architecture を使った機械学習という意味でしかなく、必ずラベルなし（教師なし）学習でないとダメといった制約はない。なので deep learning には教師あり（ラベルあり）学習 supervised learning も教師ありなしの半々学習 semi-supervised learning も教師なし（ラベルなし）学習 unsupervised learning も含まれる。ただ、実際には教師なし学習として多く適用されている。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;余談&lt;/h3&gt;ミクロにみるとニューロンの出力は ON/OFF の 2 値ではなく、伝達物質の種別によりポジティブ、ネガティブ、なしの 3 値、もしくは伝達物質の種別を細かく見ることでさらに多くのビット数を要する値となる。ゆえに、個人的にはこの辺りの観点をモデル化すべきではと思っている。またスパース（distributed）な環境であるニューロンネットワークにおいて、ローカルの観点はネットワーク距離的なものも、地理的なものもあると思っている。どうしても従来からの考えをベースとすると半導体的な binary な考えに陥ってしまうが、結構量的な（かつ化学的な）気がする。&lt;br /&gt;
基本的に従来手法ではこのような仕様は確率で表現している。例えば、統計的に捉えるとあるニューロンの発火の際に、近傍のニューロンの1〜4%が同時発火するらしい。ネットワークを構成するニューロンの数は膨大でありマクロでみると、上記ミクロのツッコミは確率動作で十分再現できるってことかもしれない。また、まずはモデリングするために単純化することが必要であることは理解できる。ただ、従来はマクロで見つつミクロで役立つ手法を適用するトップダウンな進め方であったが、そろそろミクロからマクロに進むボトムダウンなやり方を取ってもいいような気がしている。脳神経学も格段に進歩しているわけだし。なお、「スパース」は「ローカル」ではない。散在しているという意味である。ゆえに、どちらかというと「分散」に近い意味であり、一見局所受容野などの区分けとして捉えがちだがプーリングに近い。&lt;br /&gt;
また、余談ついでに、ニューラルネットワークなどで &quot;compact&quot; と表現される時、その意味するのは入力データを簡易化することを意味する。例えば、入力データの特徴を抽出するとか、入力データの表現の次元数を減らすことである。つまり、&quot;compact&quot; 化するためには階層を増やすこととなる。コンパクトとすると書かれると階層数を減らすと捉えてしまいそうだが、実際は逆である。例えば深さ k のネットワークで得られたデータをコンパクト化したい時、深さを k＋1 とする。&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceromondo.blogspot.com/feeds/9041595464479927108/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ceromondo.blogspot.com/2012/09/deep-learning.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/9041595464479927108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/9041595464479927108'/><link rel='alternate' type='text/html' href='http://ceromondo.blogspot.com/2012/09/deep-learning.html' title='Deep Learning'/><author><name>goemondo</name><uri>http://www.blogger.com/profile/17435609166287599853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBzzt2y_e87Gq_DyMOP7hLXjtzTK0S-UI-KcbukCTAe68exHWX3dwUwrXC1u6f0jRaJzF8-DbBz8Mxokx38sT-4s94c4VvJ2By6g6075v6WksNTNZsddzCT4p-IYM4Sg/s220/profile.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7457791004653031882.post-5571468366284407032</id><published>2012-09-17T23:26:00.000+09:00</published><updated>2012-10-23T10:04:37.521+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="convolution"/><category scheme="http://www.blogger.com/atom/ns#" term="neural network"/><title type='text'>Convolutional Neural Network</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;論文&lt;a href=&quot;http://arxiv.org/abs/1112.6209&quot;&gt;「Quoc V. Le, Marc&#39;Aurelio Ranzato, Rajat Monga, Matthieu Devin, Kai Chen, Greg S. Corrado, Jeff Dean, Andrew Y. Ng. Building high-level features using large scale unsupervised learning. 29 Dec 2011(last (this) revised 12 Jun 2012).」&lt;/a&gt;を読 んでいると、わからんキーワードを調べるとまた別のわからんキーワードにぶつかり、という無限ループにハマッテしまいました。なので、もういっそきちんとニューラルネットワーク関連テクニックをまとめてしまおうと思った次第です。まずは（と言ってもこれだけかもだけど）、畳み込みニューラルネットワーク（Convolutional Neural Network）をまとめてみます。ちなみに iPad でまとめていることもあって図は全て手書きです。見にくいのはご容赦ください。&lt;br /&gt;
なお、上記論文の日本語意訳もアップする予定ですが、忙しさにかまけて読めてなく、そのうちに別のことにも興味が出てという状態でいつになることやら。。。&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;フィードフォワードニューラルネットワークの足りないこと&lt;/h3&gt;入力層のユニットから（隠れ層（中間層）のユニットを経由して）出力層のユニットへ信号が伝播するフィードフォーワードニュラールネットワークは画像認識などのアプリケーションに適用されてきた。そして、その認識精度の向上や汎化能力を獲得するためにいろいろなテクニックが適用されてきた。畳み込みニューラルネットワーク（Convolutional Neural Network, CNN）はその一つである。&lt;br /&gt;
例えば画像処理においてフィードフォワードニューラルネットワークの何がダメなのか。言ってみれば汎化能力の欠如である。特に、畳み込みニューラルネットワークにおいては、その時代背景というか手書き郵便番号の認識という適用分野もあって、移動不変性の獲得を目的としている。移動不変性（Translation Invariance）とは検知対象が入力データフィールドのどこにあってもきちんと検知できることである。拡大・縮小によるサイズの不変性や回転による不変性は対象外である。&lt;br /&gt;
具体的に、入力層、隠れ層、出力層の3層で構成され、各層のユニットが前層の全てのユニットと接続された（フル接続な）フィードフォワードニューラルネットワークを画像処理に適用する場合を考える。例えば図1の画像Xを学習したネットワークに対して、画像Xから検知対象の位置が右にズレた画像X&#39;を入力すると、入力層の各ユニットには異なるデータが入力されることになる。この相違データはある意味誤差として隠れ層の全ユニットに伝播され、さらに出力層の全てのユニットにも伝播される。つまり、ユニット間の接続数が多すぎて1ユニットの出力がネットワーク全体に影響を及ぼし、柔軟性や汎化性に欠けることになる。それは特定画像にのみ特化された学習結果を得るだけとなり、ハードコーディングすることと同義である。&lt;br /&gt;
つまり、位置に関して固定的な画像に対しては確実な認識結果を返す学習をさせることができるが、（位置に関して）揺らぎのある画像に対しては認識率は高くない。これがフィードフォワードニューラルネットワークの課題である。なお、移動のケースに限らず図2のように一部が欠損している画像の認識が可能なことはフィードフォワードニューラルネットワークの特徴でもあるが、その効果の向上も畳み込みニューラルネットワークにはあると思う（後述する局所受容野により）。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1GUxz2OPzApFegT343ur2Lv78qstXUtdrhRy3_qSdg59gyiHZuKbxa8ARoKr_AUXR6-jXKMkqpJTbQgkeeHrgKbAiYniQgpbUCMuT423bPWoXptKhvcSmWSRyRyipUNeZOYH5HmDwIuzi/s1600/trans.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1GUxz2OPzApFegT343ur2Lv78qstXUtdrhRy3_qSdg59gyiHZuKbxa8ARoKr_AUXR6-jXKMkqpJTbQgkeeHrgKbAiYniQgpbUCMuT423bPWoXptKhvcSmWSRyRyipUNeZOYH5HmDwIuzi/s320/trans.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図1 入力画像の例（移動）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGJGJPWDtYBICSBTpqaMTqpqzB9by1xZBH3l4nr6kQSLk2QrXBARQgqZrB0U79FQpaArhwBe_Sl-P5OIc5OJQOqEx67NU_fWmFsL_d8LzlF8ba3vjNDBJB5nxGazC-xsUEhOuyEVLaBSUJ/s1600/xx.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGJGJPWDtYBICSBTpqaMTqpqzB9by1xZBH3l4nr6kQSLk2QrXBARQgqZrB0U79FQpaArhwBe_Sl-P5OIc5OJQOqEx67NU_fWmFsL_d8LzlF8ba3vjNDBJB5nxGazC-xsUEhOuyEVLaBSUJ/s320/xx.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図2 入力画像の例（一部欠損）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;なお、例えばエッジ検出においては、画像の暗いピクセルと明るいピクセルの境界を検出するために、ニューラルネットワークには下図のような入出力サンプルが与えられることになる [&lt;a href=&quot;http://www.inf.ufsc.br/~otuyama/eng/academic/cnn/index.html&quot;&gt;Convolutional Neural Networks&lt;/a&gt;]。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; class=&quot;bstbl&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;入力・出力&lt;/th&gt;&lt;th&gt;サンプル&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;入力画像&lt;/td&gt;&lt;td&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf__QcWC2q36oy0o2RFBqEEI3NiwabaqZkgnCMQtNJXaFFBs2niDZgkPBEVGgzwDWAmoXAmtL4L5fJ03uI5NvDepNGz7YYsK4yG6t1p-H41Pol9acCHUEFsyrNrYUm4zvYO4OJYFd3TVg_/s1600/in.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf__QcWC2q36oy0o2RFBqEEI3NiwabaqZkgnCMQtNJXaFFBs2niDZgkPBEVGgzwDWAmoXAmtL4L5fJ03uI5NvDepNGz7YYsK4yG6t1p-H41Pol9acCHUEFsyrNrYUm4zvYO4OJYFd3TVg_/s1600/in.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;出力画像（エッジ検出画像）&lt;/td&gt;&lt;td&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe-6hyAWgCgd4xfrzOAFAPvtoMZxmIw4dtO7_sPuigBlvBeh1asU-h38gkNnrCKTZMHt_VowK6ssusAEp3c4agF2sFUdBMqXPyK2ee5_w_Yd_kNQZh23naV7GJfryd8VJb2ouoQJwpGdmV/s1600/out.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe-6hyAWgCgd4xfrzOAFAPvtoMZxmIw4dtO7_sPuigBlvBeh1asU-h38gkNnrCKTZMHt_VowK6ssusAEp3c4agF2sFUdBMqXPyK2ee5_w_Yd_kNQZh23naV7GJfryd8VJb2ouoQJwpGdmV/s1600/out.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 class=&quot;chaptitle&quot;&gt;畳み込みニューラルネットワーク&lt;/h3&gt;&lt;h3 class=&quot;sectitle&quot;&gt;局所受容野（Local receptive feild）&lt;/h3&gt;上記課題を解決するにはどうすれば良いか？誤差が全てのユニットに伝播することが問題ならそれをやめればいいじゃない、である。つまり、ある層のユニットへ接続する前層のユニットの数を制限する。このことを生物学（神経科学）から用語をもらってきて「局所接続性」とか「局所受容野（Local receptive feild）」とかの言葉で表現する。&lt;br /&gt;
具体的に、図3において m 層のユニットは (m-1) 層の一部である3つのユニットのみと接続している。つまり m 層のユニットは&quot;3&quot;の局所受容野を持ち局所的にデータを受信する（制限される）。それゆえ、局所受容野は対応する一部のユニットのみのデータを受信するフィルタとして動作しているとも言える。なお、ここで m 層のユニットに接続される (m-1) 層のユニットの数や接続方法は特に限定されず、実装依存である（例えば&lt;a href=&quot;http://research.microsoft.com/en-us/um/people/jplatt/ICDAR03.pdf&quot;&gt;&quot;Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis&quot;&lt;/a&gt;では（詳細は後述するが）入力画像のサイズや入力画像の低解像度化率、局所受容野のオーバーラップ率などにより局所受容野のサイズを決定しているし、接続する前層のユニット数を（中央を作れるように）キリの良い奇数としたりしている）。&lt;br /&gt;
また m 層では入力データがフィルタされているが、(m+1) 層のユニットは m 層の全てのユニットと接続していることから、ネットワーク全体を見ると全ての入力データが出力に反映されていることがわかる。これではフル接続なネットワークと同じように誤差がネットワーク全体に波及する問題に陥るのでないかと思うかもしれない。しかし m 層にて誤差を一部のユニット内に閉じ込めているため、フル接続なネットワークと比較すると誤差の影響範囲を限定することができる（良い例とは言えないが、選挙を想像すると、国民投票の場合、民意に反するものの影響力の強い人の意見が反映される可能性が高いが、県毎に集計される選挙の場合一地区にしか影響は及ばない）。このように、畳み込みニューラルネットワークは前段側に局所接続性を持たせ、後段をフル接続とするネットワーク構成となる。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq5ENCgVOcQ2lYXBqufCmXD_N_u6IftTFhbgnFMxvAaJlTZkvtT3u5tuJvAR7FruySOTaQezZlauj4j-7VlP26XBwHyD24klZ1Q_7U5pdalZT7q2Q3zjYRQrl_xjuQiu-DHlVzQAyvk34X/s1600/lrf.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq5ENCgVOcQ2lYXBqufCmXD_N_u6IftTFhbgnFMxvAaJlTZkvtT3u5tuJvAR7FruySOTaQezZlauj4j-7VlP26XBwHyD24klZ1Q_7U5pdalZT7q2Q3zjYRQrl_xjuQiu-DHlVzQAyvk34X/s320/lrf.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図3 局所受容野&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;なお、局所受容野そのものの（厳密な）定義には含まれないと思われるが、局所受容野はオーバーラップする（ことが強く推奨される）。これは図4のようにちょうど局所受容野の間にエッジとなるようなデータが入力された場合を想定するとわかりやすい（左右両方の局所受容野は重みの学習によるが白より黒が支配的となり、黒と白によるエッジを検出できないかもしれない）。つまり、データの欠損を防止するために局所受容野はオーバーラップされる。なお、オーバーラップされるノード数やその厳密な方法は特に限定されず、実装依存である。先のMicrosoftの論文によると、29x29の2次元入力画像に対して、各辺で5をサイズとする5x5の局所受容野を設定し、2つの局所受容野で4つのユニットをオーバーラップさせている。この値の設定は後述する max-pooling なども絡むので、そのようなテクニックをまとめた後に参考までに設定方法をまとめてみることにする。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWBZEKsGWrV8Ve_fFCEMlP5lN-J657psKAvE-4C7PyCeAjXjmWMyczpH4LLQoveJtWDClGH0dP7TbCEfPdI3AZ1olnmEertTp6oWEUrkorbqrD2yLle7ZFCcdJb1Nt1sxyQ54o_SX67_r6/s1600/overlap.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWBZEKsGWrV8Ve_fFCEMlP5lN-J657psKAvE-4C7PyCeAjXjmWMyczpH4LLQoveJtWDClGH0dP7TbCEfPdI3AZ1olnmEertTp6oWEUrkorbqrD2yLle7ZFCcdJb1Nt1sxyQ54o_SX67_r6/s320/overlap.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図4 なぜオーバーラップするか&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 class=&quot;sectitle&quot;&gt;共有重み（Shared Weight）&lt;/h3&gt;局所受容野により誤差の範囲を限定させることができるようになった。つまり、一部が変更された画像であっても期待する検知結果が得られるようになる。しかし、これでは画像の移動に対応できない。例えば、図3において (m-1) 層の左から3つのユニットに入力されるデータにより学習したことは m 層の左のユニットにしか適用されない。なので、入力画像が移動してしまい、(m-1) 層の左から3つのユニットへ入力されていたデータが (m-1) 層の中央の3つのユニットに入力される場合、その特徴を認識することができない（ m 層の中央ユニットは別の入力データに対して学習している）。なお、学習とは各層間の接続の重みの誤差を最小化することである。どうしたものか。なら、重みを共有すればいいじゃない、である。&lt;br /&gt;
つまり、局所受容野における重みを他の局所受容野と共有する。なお、重み共有の単位は受容野である（図3ではユニット間の接続の色（赤、黄、淡い青）が同じ重みを持つ接続であることを示していて、受容野を単位に重みが共有されていることがわかる）。これは受容野を単位に局所性を表現しようとしているためである。なので、複数の受容野をまとめたマクロ受容野を共有の単位とすることか、逆に受容野より小さなサイズの共有重み領域を設けることもできると思うが、パラメータが複数になり計算が複雑になるばかりか、そもそも共有重みサイズが適切であればでそのサイズを受容野とすればいい。逆に言ってしまえば受容野のサイズが学習効果を決定する重要なパラメータだと言える（この辺りは例のMicrosoftの論文の具体的な方法を後述してみることにする）。このように局所受容野を単位に重みを共有し、また入力されるデータが画像のような2次元である場合（1次元配列に格納しなければ）、制限される領域が矩形空間として表現できることから、制限されるユニットの領域、つまり局所受容野に適用される共有重み空間を「ウィンドウ」と呼び、局所受容野を順次処理する場合、ウィンドウをシフトしていくため、その処理をシフトウィンドウと呼ぶこともある。&lt;br /&gt;
2次元画像を入力データとする場合に局所受容野と共有重みを適用したニューラルネットワークは図5のようにデータが伝播される。図5では (m-1) 層に適用される赤、黄、淡い青それぞれのウィンドウが適用される局所受容野から、それぞれ対応する m 層のユニットにデータが伝播される。ここで、赤、黄、淡い青それぞれのウィンドウ内の重みは共通である（w&lt;sup&gt;Red&lt;/sup&gt;&lt;sub&gt;i, j&lt;/sub&gt; = w&lt;sup&gt;Yellow&lt;/sup&gt;&lt;sub&gt;i, j&lt;/sub&gt; = w&lt;sup&gt;Blue&lt;/sup&gt;&lt;sub&gt;i, j&lt;/sub&gt;, i, j = 1, 2, ..., s, ここでsはウィンドウのサイズ（＝しつこいけど局所受容野のサイズ））。つまり、フィードフォワードニューラルネットワークではユニット間の接続に重みが付与されるが、畳み込みニューラルネットワークでは接続そのものに重みが付与されるのでなく、ウィンドウに付与されると考えるとわかりやすい。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaO6eCHW3UqqBENrOpDMQVValji0kW6anzkYg3F0K3Kh0Nou8G3_sirY5AQlrySzS1sGjRBOdTKnsEyavbD7DSxUnguU9V5V_m3aLsBj7tEUBmZZTQtGxiX-6IUT2cJGKZwT41lc6pe3Tk/s1600/sharedweight.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaO6eCHW3UqqBENrOpDMQVValji0kW6anzkYg3F0K3Kh0Nou8G3_sirY5AQlrySzS1sGjRBOdTKnsEyavbD7DSxUnguU9V5V_m3aLsBj7tEUBmZZTQtGxiX-6IUT2cJGKZwT41lc6pe3Tk/s320/sharedweight.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図5 共有重み&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;この重みを共有することが畳み込みニューラルネットワークが共有重みニューラルネットワーク（Shared Weight Neural Networks, SWNNs）として呼ばれる場合もある所以である。&lt;br /&gt;
[追記 20121023] &quot;Le, Q. V., Ngiam, J., Chen, Z., Chia, D., Koh, P. W., and Ng, A. Y. Tiled convolutional neural networks. In NIPS, 2010.&quot;によると、共有重みもやり方が複数あり、完全に固定値な重みを隠れ層の全てのユニットで共有するやり方と、上記のような&quot;タイル（2次元だと、1次元だと幅）&quot;により、一定幅内は固定でなく幅を単位に重みを共有するやり方がある。元々の convolutional neural network における共有重みは前者であり、明確には後者を採用したネットワークは Tiled convolutional neural network と呼ばれる。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;特徴マップ（Feature Map）&lt;/h3&gt;局所受容野と共有重みにより、局所的な情報のみをパスするフィルタ（局所的な誤差情報の全体への波及防止）と、入力画像における認識対象の位置に依存しない接続方法を獲得したことになる。さて、ここで問題がある。それは重みを共有することで、全ての局所受容野が同じ学習をすることになり、全ての局所受容野で類似する特徴しか認識できなくなってしまうことである。どうするか。局所受容野の次元数を増やし各次元それぞれで異なる特徴を獲得すればいいじゃない、である。&lt;br /&gt;
つまり、図6のように (m-1) 層のある空間に適用される赤いウィンドウ位置から複数次元の m 層のユニットに対して局所受容野が設定される。ある重み（w）が設定・学習されるウィンドウにて伝播されるフィールド h&lt;sub&gt;i&lt;/sub&gt; と、別の重み（w&#39;）が設定・学習されるウィンドウにて伝播されるフィールド h&lt;sub&gt;j&lt;/sub&gt; が用意される。こうすることで、各フィールドでそれぞれ異なる特徴を獲得できることになる。それゆえ、このフィールドを特徴マップと呼ぶ。また、紛らわしいことに、特徴のみを次の層に写像しているとも言えるので、ウィンドウをカーネルウィンドウをと呼ぶこともある。なお、この特徴マップの数は畳み込みニューラルネットワークの仕様というより実装依存である。恐らくは入力データのサイズや入力データの複雑度に依存する。基本的に用意される特徴マップ数が少ないと獲得できる特徴が欠損するため多めに設定することになるが、多すぎると冗長なシステム構成となる。よって、最適なマップ数は実験等により得るしかないと思われる。なお、この特徴マップシステムは、1つの特徴マップ内にも特徴を獲得できていない、無駄なダーク領域が発生する冗長なシステム構成と考えてしまうが、これは冗長でない。ある特徴マップが検出できる特徴が入力データのどこに現れるかわからないため、全入力ポイントでその特徴を検知しなくてはならないためである（実装上はデータベースの共有化等ができるだろうが）。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZVfI44wQ5WDmI3kwBOnRBg-PqgW0MeaqWRrzwIBtiE9ilUdBBRPOpa6ccaTmdItP9Bf80cMxWUvNrQR-3a0XPmnRM9Di_5f1-AtRk95_csUaQ1ymqOzsv9Uorheoy5953NHH0h2kfUsb7/s1600/featuremap.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZVfI44wQ5WDmI3kwBOnRBg-PqgW0MeaqWRrzwIBtiE9ilUdBBRPOpa6ccaTmdItP9Bf80cMxWUvNrQR-3a0XPmnRM9Di_5f1-AtRk95_csUaQ1ymqOzsv9Uorheoy5953NHH0h2kfUsb7/s320/featuremap.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図6 特徴マップ&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;さて、このように複数の特徴マップを用意するために、例えば2次元画像を入力とするネットワークでは重みは4次元のパラメータで決定される。つまり、画像の縦横 (X, Y)の2次元と、入力元の特徴マップインデックスと入力先の特徴マップインデックスの2次元の合計4次元である。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;おさらい 畳み込み演算（Convolution）&lt;/h3&gt;畳み込み（Convolution）の意味は、ある事象の反応の大きさ（＝ある事象の初期の大きさ × 反応の動き）を全ての事象でまとめることである。具体的に、新聞で報道されるような事件の社会的な反響という例で考えてみる。芸能人の結婚ネタでも大企業の汚職事件でも事件が発生すると、人々はTwitterやら2ch（one of the famous BBS in japan）やらで感想を書く、もしくはお昼ごはんを食べながら同僚や友人とそのネタで会話するなどの反応を示す。だいたいこういう反応は事件発生からの時間が経過するにつれ小さくなるなど、事件に関わらず似たような挙動となる。このように、事象に対する反応は時間を引数とする関数で表現できる（ちなみにこの関数はどんな事件であっても同じ関数とする）。ここでは、事件発生日をτ、現在時刻（調査したい時刻）を t、反応関数を w とすると&lt;br /&gt;
w(t - τ) = w(現在時間 - 事件発生時間) = w(経過時間)&lt;br /&gt;
となる。また、別に事件の大きさを表現する関数 f も定義する。事件の大きさはいろいろな表現を採ることができるが、ここでは事件は発生時間によって一意に定義できることから、事件の発生時間を引数とする&lt;br /&gt;
f(τ) = f(事件発生時間)&lt;br /&gt;
とできる。&lt;br /&gt;
さて、事件の反応の大きさは事件の大きさに相関すると言えるため、事件の反応の大きさは事件の大きさ×反応関数である。では、ある時刻 t における反応の大きさはどうだろうか。これは、w(経過時間)をf(発生時間)にかければ良い。つまり、&lt;br /&gt;
F(t, τ) = f(τ)w(t-τ)&lt;br /&gt;
と表現できる。ここで、事件は何度も発生するものだし、ある事件が発生しその反響が残っている時に別の事件が発生するかもしれない。とするとある時刻 t における反響の大きさは時刻 t までに発生した全事件の反響の和で表現される。f と w を連続関数とすると&lt;br /&gt;
(f*g)(t) = ∫f(τ)w(t-τ)dτ&lt;br /&gt;
で表現でき、離散関数とすると&lt;br /&gt;
(f*g)(t) = Σf(τ)w(t-τ)&lt;br /&gt;
となる。これが畳み込み演算である。一般には畳み込み積分は電気回路における入力インパルスに対するある時刻の反応の大きさなどの計算に利用されたりしている。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;なぜ畳み込みニューラルネットワークという名前か&lt;/h3&gt;「局所受容野」と「共有重み」と「特徴マップ」の3つの機能をまとめると図7のようになる。図7の通り、畳み込み層（m）の前層（m-1）の矩形領域データに対して共有重みを持つウィンドウをかけることにより複数の特徴マップを得る。具体的に、(m-1) 層のデータを x とすると、特徴マップ h&lt;sub&gt;a&lt;/sub&gt; の対象ユニットの値は wx となり、同様に h&lt;sub&gt;b&lt;/sub&gt; の対象ユニットは w&#39;x、 h&lt;sub&gt;c&lt;/sub&gt; の対象ユニットは w&quot;x となる。x はどの特徴マップでも同じである。&lt;br /&gt;
ここで重要なのは&quot;忘れがち&quot;な「フル接続層」である。局所受容野の節で説明したように、畳み込みニューラルネットワークは全入力データを出力に反映させるために後段ではフル接続される。図7では (m+1) 層をフル接続層としているが、m 層と (m+1) 層間は複数の畳み込み層を挿入しても良い。それゆえ、(m+1) 層の値は Σw(v)x(v) となる。ここで v は特徴マップのインデックスを示す。&lt;br /&gt;
さらに、x(v) はどの特徴マップでも同じ値である。つまり、&lt;br /&gt;
x(v) = x(u-v)&lt;br /&gt;
であり、&lt;br /&gt;
Σw(v)x(v) = Σw(v)x(u-v)&lt;br /&gt;
である（但し (u-v) があり得ないインデックスとなっても同じ値とする必要がある）。&lt;br /&gt;
このように（恐らく、自分の理解だと）(u-v) には意味がなく、x に対して w を畳み込む（かけて加算する）ことを「畳み込み」と呼び、その結果「畳み込みニューラルネットワーク」と呼称しているものと思われる。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDzz6T4KAVy0bsAgyr1PfY8OUjlOryu-J6qT3u_H2K12v-sA5zwxXBdihTq7WCdmxn7-dko3fmiYmKaPNONMAbrEeyYIG70e5oxAF-JFiYl8bwS8PSBvLfOb9_da-sM-5eZvVZh5CvSDUO/s1600/conv.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDzz6T4KAVy0bsAgyr1PfY8OUjlOryu-J6qT3u_H2K12v-sA5zwxXBdihTq7WCdmxn7-dko3fmiYmKaPNONMAbrEeyYIG70e5oxAF-JFiYl8bwS8PSBvLfOb9_da-sM-5eZvVZh5CvSDUO/s320/conv.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図7 畳み込み&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;さて、この結果、畳み込み層における信号の伝播は、i を畳み込み層（図7では m 層）のインデックス、j を次層（図7では (m+1) 層）のインデックスとすると、&lt;br /&gt;
h&lt;sub&gt;i&lt;/sub&gt;(v) = Σ_{j}Σ_{u}w&lt;sub&gt;ij&lt;/sub&gt;(u)x&lt;sub&gt;j&lt;/sub&gt;(u-v),&lt;br /&gt;
y&lt;sub&gt;i&lt;/sub&gt;(v) = f(h&lt;sub&gt;i&lt;/sub&gt;(v))&lt;br /&gt;
で表現される。ここで f はシグモイド関数などの非線形フィルタ関数であり、例えば双曲線関数の tanh などが利用される。&lt;br /&gt;
なお、畳み込み演算の表現とすることで（巨大なネットワークの場合）、高速フーリエ計算（Fast Fourier Transform, FFT）を利用して高速に計算することができる（&lt;i&gt;F&lt;/i&gt;をフーリエ変換とする時の畳み込み定理 &lt;i&gt;F&lt;/i&gt;(f*g) = &lt;i&gt;F&lt;/i&gt;(f)・&lt;i&gt;F&lt;/i&gt;(g) を使うことで、愚直に畳み込み計算をするのでなく、一旦f, gをFFTし、その結果を乗算し逆演算（逆高速フーリエ変換、IFFT）することで高速に畳み込み計算を実行することができる）。&lt;br /&gt;
[追記 20121023] 上記追記に書いたように、ベーシックな convolutional neural network は、完全に固定値な重みを隠れ層の全てのユニットで共有する。よって基本の畳み込みには特徴マップなんてない。なら何だって話だか、上記論理は間違ってなくて、単に「出力層は各隠れ層担当入力値に固定の重みをかけて、その結果を全ての隠れ層ユニット分加算する」という演算の「かけて足す」が畳み込みの意味である。O=Σw(v)x(v) としてO は出力、w は重み、x は入力値である。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;プーリング（max-pooling）&lt;/h3&gt;以上で畳み込みニューラルネットワークと呼ばれる所以はまとめたことになるが、実は、畳み込みニューラルネットワークにはもう一つのテクニックが適用される。それがプーリングである。&lt;br /&gt;
畳み込みニューラルネットワーク、特に共有重み（と特徴マップ）による移動不変性は完全だろうか。この答えを提示するのに、本来は畳み込みニューラルネットワークを実装してシミュレートして評価すべきだろうけど、仮説でお茶を濁します。例えば図8のように、ピクセルサイズで3x3のサイズを持つウィンドウを1だけオーバーラップさせるような実装方法を採る時、検知対象の位置が1ピクセルだけずれていれば特徴を検出できないかもしれない。ウィンドウの各重み w&lt;sub&gt;i, j&lt;/sub&gt;に対して、&lt;br /&gt;
[w&lt;sub&gt;i, j&lt;/sub&gt;, w&lt;sub&gt;i, j+1&lt;/sub&gt;, w&lt;sub&gt;i, j+2&lt;/sub&gt;] ≠ [w&lt;sub&gt;i+1, j&lt;/sub&gt;, w&lt;sub&gt;i+1, j+1&lt;/sub&gt;, w&lt;sub&gt;i+1, j+2&lt;/sub&gt;]&lt;br /&gt;
であれば検出できないであろう。つまり、当たり前であるが実装時に計算をサボる設計にすると完全体になれないのである。じゃあウィンドウは1つずらしてオーバーラップするしかやりようがないよ、計算が大変なのは仕方ないよと諦めるべきか。どうするか。入力データそのものをあいまいにして多少のズレはなかったことにすればいいじゃない、である。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimQ1vpm1vZkW20Q-eoWmhIxQL-LgumoniSw4ve-_vwOTYDEYFjEJLWFPWHXfBVFYdFEEoVhvCcUyrq-cVmqzWKNYSR3nSCkH46FTxmFJ9Yavk0oag5s6lsENSNTIgPncjCyx_0p6S8g9u9/s1600/shiftimage.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimQ1vpm1vZkW20Q-eoWmhIxQL-LgumoniSw4ve-_vwOTYDEYFjEJLWFPWHXfBVFYdFEEoVhvCcUyrq-cVmqzWKNYSR3nSCkH46FTxmFJ9Yavk0oag5s6lsENSNTIgPncjCyx_0p6S8g9u9/s320/shiftimage.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図8 入力データの位置ズレと重みウィンドウのオーバーラップ幅&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;つまり、入力データを低解像度化する。これは非線形な処理であり、具体的に入力データを一定の領域で区切り（2次元画像の場合一定サイズの矩形領域で区切り）、この分割領域は先の局所受容野のようにオーバーラップさせない（情報の重複取り込みとなるため）。そして各領域の&quot;最大値&quot;を出力する（例えば入力データの各ピクセルが色の明度（0〜255）で与えられるのであれば、その分割領域内の最大値となる）。&lt;br /&gt;
このプーリング処理の具体的な効果を図9に示す。直線を含む画像を考え、直線が描かれたピクセルは1、それ以外は0である白黒画像とする。あるピクセルに着目し、そのピクセルが1であったとすると、そのピクセルの周囲8ピクセルのいづれか一つ（もしくは2つか3つ）は1である（ドットでなくて直線だから）。ここでは話を簡単にするために1つとする。ここで、この9ピクセルが成す正方空間に重なるようにプーリングのための 2x2 のサイズを持つ領域を持ってきて低解像度化する（図9では赤、黄、青、緑の矩形領域）。例えば赤の矩形領域にもう一つの黒ピクセルがあればそれは1, 2, 4のいづれかに存在するものの、どのピクセルが黒であっても次の層ではそれを気にする必要がない。つまり、低解像度化する矩形領域より小さなオーバーラップ幅とすることで移動不変性を確実なものとする。&lt;br /&gt;
また、このようにプーリング処理は単純にデータ量削減による計算量の削減にも貢献する。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijILbnhyuPw9Lb9chhxglYKZjE-MD3e_JSkcigUPa_3KjJIryVHqot57tQoUHwhKE9v7Yle-KPJ7a_VPoTinqKbTizob6_2eG0XnANif0n1aOTYOg7VB0oMlkHHMKfUWALpJa7AyVNMcGh/s1600/pooling.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijILbnhyuPw9Lb9chhxglYKZjE-MD3e_JSkcigUPa_3KjJIryVHqot57tQoUHwhKE9v7Yle-KPJ7a_VPoTinqKbTizob6_2eG0XnANif0n1aOTYOg7VB0oMlkHHMKfUWALpJa7AyVNMcGh/s320/pooling.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図9 プーリング処理のイメージ&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 class=&quot;sectitle&quot;&gt;実装例&lt;/h3&gt;上記のように、局所受容野のサイズ、オーバーラップ幅、プーリング矩形領域のサイズは密接に関係する。例えば、先のMicrosoftの文献では、プーリング矩形領域のサイズを基本にこれらのサイズを導出している。手順として、まず入力データを低解像度化する。画像の解像度を落とすには単純に入力画像の解像度を 1/n 化すれば良く、この文献では 1/2 に落としている。この 1/2 とすることは、次の層のユニット数を低解像度化しない場合のユニット数を 1/2 とすることを意味する。&lt;br /&gt;
この 1/2 をベースに畳み込みのためのウィンドウサイズを決定する。例えばウィンドウサイズを3とする場合、オーバーラップ幅の可能な値は1と2である。幅1の場合に低解像度化すると局所受容野がまったくオーバーラップしなくなる。また、幅2の場合には低解像度化しても幅1のオーバーラップとなるが、オーバーラップ率が 1/3 であり、これでは情報欠落が欠落する可能性がある（図9）。同様に、ウィンドウサイズを4, 5, ... とすることでオーバーラップ幅の自由度が高くなる。例えばウィンドウサイズを7とするとオーバーラップ幅の可能な値は3〜6である。ここで、幅が小さい場合は先のウィンドウサイズを3とする場合と同様に情報欠落が考えられ、逆に幅を大きくすると冗長度が高くなる。このような考慮の結果、ウィンドウサイズを5とし、オーバーラップ幅を4とする値は採用している。なお、ウィンドウサイズを奇数とする理由はそれほど重要でないと思われる。単に、局所受容野を構成する前層のユニット群に対して次層のユニットをセンタリングでき、管理が容易となるというだけであると思われる。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsTuawJx02EpPZxaIYSix4g8n2IpXr9GIespV46H8C7UFjNvyQXyhgDitvgc1Deor3vdeTZ-rWqJGRKxv4Ae0RzteDLODcrQt1rMe9cNu-NzMSK8i5zZOO22WC1-cHQi0BPrGgUSr1_NhU/s1600/impl.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsTuawJx02EpPZxaIYSix4g8n2IpXr9GIespV46H8C7UFjNvyQXyhgDitvgc1Deor3vdeTZ-rWqJGRKxv4Ae0RzteDLODcrQt1rMe9cNu-NzMSK8i5zZOO22WC1-cHQi0BPrGgUSr1_NhU/s320/impl.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図9 ウィンドウサイズ3、ダウンサンプリング1/2の局所受容野&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 class=&quot;sectitle&quot;&gt;感想&lt;/h3&gt;・意外と愚直にアップデートした結果が畳み込みニューラルネットワークなんだなと実感。一つの問題に対して一つのテクニックを適用し、それで課せられた問題にさらにテクニックを適用している。&lt;br /&gt;
・畳み込みニューラルネットワークが生まれた（そのための課題を見つけた）のが時代に沿ってるなと。恐らくこの時代でニューラルネットワークの適用対象は郵便番号の手書き番号の認識等であり、このアプリケーションでは人間に文字のサイズなどに関してある程度の制約を与えることができるため、適用するニューラルネットワークにはサイズ不変性より移動不変性が求められる。その結果の畳み込みニューラルネットワークなのだなと。&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceromondo.blogspot.com/feeds/5571468366284407032/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ceromondo.blogspot.com/2012/09/convolutional-neural-network.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/5571468366284407032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/5571468366284407032'/><link rel='alternate' type='text/html' href='http://ceromondo.blogspot.com/2012/09/convolutional-neural-network.html' title='Convolutional Neural Network'/><author><name>goemondo</name><uri>http://www.blogger.com/profile/17435609166287599853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBzzt2y_e87Gq_DyMOP7hLXjtzTK0S-UI-KcbukCTAe68exHWX3dwUwrXC1u6f0jRaJzF8-DbBz8Mxokx38sT-4s94c4VvJ2By6g6075v6WksNTNZsddzCT4p-IYM4Sg/s220/profile.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1GUxz2OPzApFegT343ur2Lv78qstXUtdrhRy3_qSdg59gyiHZuKbxa8ARoKr_AUXR6-jXKMkqpJTbQgkeeHrgKbAiYniQgpbUCMuT423bPWoXptKhvcSmWSRyRyipUNeZOYH5HmDwIuzi/s72-c/trans.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7457791004653031882.post-2358350010606133644</id><published>2012-01-21T00:35:00.000+09:00</published><updated>2012-01-21T00:35:29.017+09:00</updated><title type='text'>労働市場の構造的問題の解決方法ってなんだ</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
今の自分の気持ちを適切に代弁してくれてる記事が見つかったのでシェア。オフショアアウトソーシングや人間労働のITへの単純置換により発生した労働市場の構造の変化を、経済学の視点からなんとかせないかんよねという話。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://on.wsj.com/xawhMC&quot;&gt;「【肥田美佐子のNYリポート】ハーバード大学教授に聞く（後編）「米労働市場の構造的問題は、格差拡大と需要の二極化」 - WSJ日本版 - jp.WSJ.com」&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
本文の簡単なまとめ&lt;/h3&gt;
2012年1月現在、米国では失業率が改善されているが、まだ楽観できる状況ではない。その理由は3つあり、問題を優先度順に見ると、短期的な労働への需要の大幅な不足（単なる雇用需要不足）、長期的な雇用機会の減少（就職への障壁が大きい長期失業者への雇用機会の提供の不足）、そして需要のある職種（賃金）と失業者の思いにギャップを生むいびつな労働市場構造である。&lt;br /&gt;
特に、第三の理由は長期的な構造改革を行うべき問題である。現在の労働需要は、管理職や専門スキルを持つ高賃金労働、レジ係などの低賃金労働が大半である一方、不況により失業した6割は中収入層である。&lt;br /&gt;
この中収入層需要が減少した原因は、アウトソーシングによる、より賃金の安い地域、国家への業務委託、テクノロジーへの労働置換である。なお、オフショアアウトソーシングやIT置換は管理層、低賃金層を対象としない（できない）。&lt;br /&gt;
この問題の解決手段は、低賃金業務のサービスリッチ化による賃金アップ、中収入失業者のスキルアップによる高収入者の仲間入りである。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;
テクノロジーによる労働市場構造の改革&lt;/h3&gt;
簡単にまとめると言っておきながら長くなった。概ね同意である。本文にあるように、アウトソーシングの対象業務は、今後も高収入層に浸食しないだろう。委託労働の成果を管理することは必要だし、機密情報の漏えいやスキルが問題となり得るため、そのものをアウトソーシングすることはないだろう。同じく、低収入層にも浸食しないだろう。低賃金労働に対してコストメリットも低いだろうし、より低い賃金の人達がいたとしても、（差別でなく）彼らとは生活スタイルがまったく異なるため、トラブル発生などのリスクが高く、結果、コストメリットが低いと思われるから。&lt;br /&gt;
&lt;br /&gt;
一方、テクノロジーへの労働置換に関しては、高収入層も低収入層もうかうかしていられない（実際はうかうかしてるんだけど）。現時点では、ITによる自動化が進んでいるものの、管理層の仕事を奪うほど最適化されておらず、また、低収入層の労働を奪うほどアナログ情報との融合が進んでいない。しかし、統計データ（BigData）の活用による潜在情報の取得ができるようになったこと、モデルベース設計による設計開発の自動化の進化、管理業務の標準化（パタン化、マニュアル化）により、高収入層へのテクノロジー置換の日は近い（但し、企画などの創造的ハイパー高収入層は除く）。低収入層に関しても、センサ技術や制御技術の進化により、置換される日も遠くないだろう（事実、アニマルセラピー用にロボット動物が売れていたりする）。&lt;br /&gt;
&lt;br /&gt;
テクノロジーへの労働置換問題の解決は難しい。ほっといても間違いなく置換が進むからである。それは何故か。それを開発するのが技術大好き技術者だから。将来自分の職を奪うかもしれないテクノロジーを、高収入層が疑問も持たず開発しているわけだ。高収入層といっても、平均年収から1σ, 2σプラスくらいの人だけども（σ：標準偏差）。理由は様々だろうけど、大きくは技術的に面白くて、その後起こる問題が見えていない場合、問題に思ってるけど（さらなる高収入層であり、この技術の浸食先でない）上司に従って黙々と開発している場合、高収入層と低収入層の労働環境になることを想定して、そのためのシステムを開発して儲けようとしている（経済効果を優先している）場合、あたりであろうか。これらの問題は古今東西行われてきたもので、この問題そのものの解決は難しい（進化をやめるかのAll or Nothingなんて究極の質問だし、放棄するのは無理って人が大半だろう）。&lt;br /&gt;
&lt;br /&gt;
よって、人間労働のテクノロジー置換は行われ続けることを前提に、労働市場の構造を変革する必要がある。変革の行き着く先は、賃金別に労働人口をマップした時に正規分布になることだろう。全体的に賃金が上がってるとさらに良い（全員が高収入層になれば全員が中間層なわけだ）。このためには、(1)中間層の復活（業種は違うかもしれないけど）、(2)低収入層の中間層への取り込み、(3)高収入層の適正化なわけだ。(1)や(2)が本文で指摘された「低賃金業務のサービスリッチ化による賃金アップ、中収入失業者のスキルアップによる高収入者の仲間入り」が一つの解決策となる。もちろん他にも様々なアプローチができると思う。社会復帰教育や高等教育の低コスト化のような政治的な施策などなど。&lt;br /&gt;
&lt;br /&gt;
ただ、これらの方法は企業の雇用コストを増加させる施策なので、経済的に上向いているときは良いけど、栄華は永遠でないため、それが企業の負担になってアウトソーシングされちゃう危険性もあるわけだから、これは根本的な解決とは言えない（その繰り返しこそが歴史であり、人間の歩むべき道だと言われたらそれまでだけども）。よって、根本的な解決策は、(A)流動的な産業構成であること（ある企業が落ちても別の企業が盛り上がってる、ある産業が落ちても別の産業が盛り上がってる）、(B)流動的な雇用環境にあること（労働者の流動が業界を越えて可能であること）、(C)全員がサーバになること（単純労働者でなく企画でも何でも創造的なサービスを提供する人になること）、であろうか。&lt;br /&gt;
&lt;br /&gt;
さて、個人的にはこれをテクノロジーそのもので何とかできないかと考えてる。それが達成できればポストIBMの位置を取れるぜ、なんて思ってる。未だ解は出てないけど。。&lt;br /&gt;
上記(A)の解決は、社会全体でしか解決できないような。そりゃ自分で何かしらのテックを開発して、雇用を創発できれば望ましいけど。これはテクノロジーに閉じない問題なので、ここでは省略します（といってお茶を濁す）。&lt;br /&gt;
上記(B)は何とかテクノロジーで解決できそうな気がしませんか。まず思いつくのは効果的に短期間で使える人材を育てる教育プログラムの開発。現代の社会復帰教育プログラムはある意味、別業種への転職を教育で支援していると言える。ただ個人的に、いまさら教育してどうすんだという死にかけ産業分野が対象であること、あまりにも基礎的すぎて企業側から見たら使えない人材しか育てられていないことが問題だと思う。まぁ画一的に教育しようとすると、そうなるのも仕方がない。&lt;br /&gt;
さて、これを解決する教育システムとは何か。一番良いのはDollHouseのような脳にスキルを直に埋める方法かもしれない。人格が支配されなければ。現実的には、もう少しパーソナライズ化した教育プログラムで効率化できないのか。&lt;br /&gt;
例えば、転職システムのあるバージョンのドラクエを想定してみると分かり易い。４人チームの平均レベルが20くらいの時に、一人を転職させたとする。この時、転職者のレベルを上げるために、またスライムと戦うとこから始めるだろうか？否、ない。転職者を戦士っぽいやつに庇わせ、他のメンバでモンスターを倒して、タカタカタッタッター♫（レベルアップ音）を1度の戦闘で聞きまくるはず。つまり、他のメンバ＝自分の今までのスキルとすると、ある程度のレベルの教育から始められるのでないかと。&lt;br /&gt;
人間はある分野を知ると、その知識を応用できる能力を持っている。ドラクエみたいな分かりにくい例えを出すまでもなく、人間はコミュニケーションを取る時に「喩え」を使う。喩えは、プレゼンのうまい人が聞き手に&quot;常識範囲内で&quot;内容を置き換える場合や、聞き手が話し手に自分のフィールド置き換えて「〜ってこと？」と確認する場合に使う。この喩えこそ、知識の応用につながる。&lt;br /&gt;
んで、何が言いたいかというと、次のような1)〜5)を持つ教育プログラムを開発することで(B)の流動的雇用環境を作れないかと思ってる。&lt;br /&gt;
1) ユーザの現在のスキル分野及びそのレベルを把握&lt;br /&gt;
2) 細分化・モジュール化された教育プログラム内容から、教育対象を抽出（集合A）&lt;br /&gt;
3) ユーザの現分野と現レベルを用いて、集合Aから必要な教育プログラムのみをパスするフィルタを通す（集合B）。もちろんインタラクティブなI/Fで調整可能&lt;br /&gt;
4) 集合B内教育プログラム内容に関して、UIを現ユーザの分野・スキルに合わせる（喩えをユーザに合わせるとか）&lt;br /&gt;
5) その他、現在の教育システムに良くある学習進捗管理など&lt;br /&gt;
&lt;br /&gt;
当然詳細を詰める必要あるし、コンテキストを把握した上でないとこんなことできないかもしれないけど、学習効率や修了レベルも上がりそうな気がする。も少し詰めてみようかと。&lt;br /&gt;
&lt;br /&gt;
そして(C)は、(B)を実現できた先に見える気がする。人の想像力は経験に依存するから。&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceromondo.blogspot.com/feeds/2358350010606133644/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ceromondo.blogspot.com/2012/01/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/2358350010606133644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/2358350010606133644'/><link rel='alternate' type='text/html' href='http://ceromondo.blogspot.com/2012/01/blog-post.html' title='労働市場の構造的問題の解決方法ってなんだ'/><author><name>goemondo</name><uri>http://www.blogger.com/profile/17435609166287599853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBzzt2y_e87Gq_DyMOP7hLXjtzTK0S-UI-KcbukCTAe68exHWX3dwUwrXC1u6f0jRaJzF8-DbBz8Mxokx38sT-4s94c4VvJ2By6g6075v6WksNTNZsddzCT4p-IYM4Sg/s220/profile.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7457791004653031882.post-244031390283876517</id><published>2011-12-01T21:25:01.742+09:00</published><updated>2012-01-21T00:29:55.719+09:00</updated><title type='text'>Twitter mood predicts the stock market.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;h3 class=&quot;chaptitle&quot;&gt;前置き&lt;/h3&gt;普段は論文を斜め読みするだけなのですが、株式市場予測という分野における分析ツールの使いどころ、つまり実際に分析ツールがどのように使われているかを把握するために、ちと真面目に&lt;a href=&quot;http://arxiv.org/pdf/1010.3003v1&quot;&gt;「Twitter mod predicts the stock market.」&lt;/a&gt;を読んでみました。ここで言う&quot;真面目に&quot;とは、直訳というより、原文→自分の解釈→日本語に落とすという流れで訳している、ということです。はっきり言ってしまえば、この分野はおろか、分析を本業としていない人による意訳です。それゆえ、訳し間違い等あるかもしれません。ご容赦ください。もちろん、ご指摘はありがたくいただきます。&lt;br /&gt;
なお、公開された論文ということで、このようにポストしますが、もし問題があれば即刻削除します。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;概要&lt;/h3&gt;論文内にもAbstractはありますが、この論文でやってることの流れをまとめます。&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;2つのツールを利用したTwitterからの社会的な気分を抽出（予測モデルへの入力データ取得）&lt;/li&gt;
&lt;li&gt;重回帰を使った複数の社会的気分の相関検証（獲得した入力データ間の相関検証）&lt;/li&gt;
&lt;li&gt;グレンジャー因果分析を利用して 社会的気分とDJIAの変分の相関性を検証（予測モデルへの他種の入力データ獲得、及び多種入力データ間の相関検証）（線形モデルによる予測）&lt;/li&gt;
&lt;li&gt;自己組織化ニューラルネットワークに社会的気分とDJIAの過去データを入力し、DJIAの予測精度を平均絶対誤差率と変化方向精度にて検証（予測モデルに2種のデータを入力、出力データの精度を検証）（非線形予測モデルによる予測）&lt;/li&gt;
&lt;li&gt;非線形予測モデルの検算（二項分布を利用した簡単な検算と、F検定を利用した検算）&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;Abstract&lt;/h3&gt;行動経済学によると、感情は個人の振る舞いや意思決定に大きく作用すると言われている。これは社会全般に適用できる概念なのか？すなわち、気分状態（mood states）が意思決定に作用し、その集合が社会を形成するのか？さらには全体の気分の相対性や経済指標の予測でさえ支配するのか？本論文では、広域的なTwitterのフィードから抽出した気分状態集合とダウジョーンズ工業株価平均（DJIA）間の時系列における相関性を調査した。調査に利用した気分状態は、2つの気分追跡ツールにより、日々のTwitterフィードのテキストを分析することで得られたものである。2つの監視ツールとは、OpinionFinder（OF）とGoogle-Profile Mood States（GPOMS）である。OF はフィードをポジティブとネガティブの2つの気分として計測する。GPOMSは平穏、確信、警戒、活気、善意、幸福の６つの次元で気分を計測する。本論文では、まず、2008年の大統領選挙と感謝祭に対する反応を比較することによって、2つのツールから計測された社会的な気分状態を相互検証した。次に、グレンジャー因果分析と自己組織型ファジィニューラルネットワークにより、OFとGPOMSにより計測された気分状態がDJIAを予測できるという仮説を検証した。その結果、特定の次元の気分状態を活用することで、他（他の次元の気分状態を活用する予測、および気分状態を活用しない予測）に対して、予測の正確性を向上できることを示した。その正確率は87.6％で、さらに平均絶対誤差率を6%以上削減できた。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;1. Introduction&lt;/h3&gt;株式市場予想は学界だけでなくビジネス面からも注目を集めている。しかし実際に予測できているのか？従来の研究&lt;a href=&quot;#reference1&quot;&gt;[1]&lt;/a&gt;&lt;a href=&quot;#reference2&quot;&gt;[2]&lt;/a&gt;&lt;a href=&quot;#reference3&quot;&gt;[3]&lt;/a&gt;はランダムウォーク理論と効率的市場仮説（Efficient Market Hypothesis: EMH&lt;a href=&quot;#annotation1&quot;&gt;*1&lt;/a&gt;）を基礎としている&lt;a href=&quot;#reference4&quot;&gt;[4]&lt;/a&gt;。EMHによると、株価は過去や現在の情報でなく広く将来の情報により駆動され、その将来情報が予測できなければ株価はランダムウォークに従うため、50%以上の確率で予測することはできない&lt;a href=&quot;#reference5&quot;&gt;[5]&lt;/a&gt;。&lt;br /&gt;
EMHには2つの問題がある。第一に、数多くの研究にて株価はランダムウォークに従わず、何らかの指標に従っていると指摘されており&lt;a href=&quot;#reference5&quot;&gt;[5]&lt;/a&gt;&lt;a href=&quot;#reference6&quot;&gt;[6]&lt;/a&gt;&lt;a href=&quot;#reference7&quot;&gt;[7]&lt;/a&gt;&lt;a href=&quot;#reference8&quot;&gt;[8]&lt;/a&gt;、EMHの基礎仮説そのものに疑問が投げかけられている。第二に、（直近の）将来の情報は予測不可能であるが、ブログやTwitterなどのオンラインソーシャルメディアから直近の指標が得られ、その指標により経済や消費に関する様々な指標が予測できることが、最近の研究により示されている。これはもしかしたら株式市場に適用できるかもしれない。例えば&lt;a href=&quot;#reference11&quot;&gt;[11]&lt;/a&gt;はオンラインチャットでのアクティビティによる本の売り上げ予想について述べている。&lt;a href=&quot;#reference12&quot;&gt;[12]&lt;/a&gt;はブログの感情を分析し映画の売り上げを予測している。&lt;a href=&quot;#reference15&quot;&gt;[15]&lt;/a&gt;は確率的潜在意味解析（Probabilistic Latent Semantic Analysis: PLSA）モデルを使ってブログの感情を分析することにより、未来の商品売り上げを予測している。さらに、Google検索では、伝染病の感染確率や消費者支出動向に関する直近の指標を提供している&lt;a href=&quot;#reference14&quot;&gt;[14]&lt;/a&gt;。&lt;a href=&quot;#reference9&quot;&gt;[9]&lt;/a&gt;は最新の経済ニュースと株価の変動の相関を調査している。&lt;a href=&quot;#reference13&quot;&gt;[13]&lt;/a&gt;はTwitter上で抽出した社会感情から映画のチケット売り上げを予測するという画期的なデモを示した。&lt;br /&gt;
ニュースが株価に影響を与えている一方、気分状態や感情が同等の役割を果たしているかもしれない。我々は感情（と利用できる情報）が人間の意思決定にとって有意なパラメータであることを知っている&lt;a href=&quot;#reference16&quot;&gt;[16]&lt;/a&gt;&lt;a href=&quot;#reference18&quot;&gt;[18]&lt;/a&gt;&lt;a href=&quot;#reference39&quot;&gt;[39]&lt;/a&gt;。行動心理学により、感情や気分が経済的な意思決定に重要な影響を与えることが知られている&lt;a href=&quot;#reference19&quot;&gt;[19]&lt;/a&gt;。それゆえ、ニュースと同等に感情や気分が株式市場を駆動すると仮定することは妥当である。この考え方は最近の研究である&lt;a href=&quot;#reference10&quot;&gt;[10]&lt;/a&gt;により支持されている。&lt;a href=&quot;#reference10&quot;&gt;[10]&lt;/a&gt;は、LiveJournalポストから抽出した不安指数からS&amp;amp;P500を予測できることを研究対象としている。&lt;br /&gt;
我々のゴールは、社会的な気分の株式市場への影響を調査することである。そのためには予測モデルに信頼性と拡張性が必要である。また、社会的な気分に関して事前評価し、その社会的な気分から現実の株式市場に即した予測を行うことができる適切な解像度をモデルに設定する必要がある。Gallupの世論調査、様々な消費指数や幸福度指数のように、母集団の代表的な標本から社会的な気分を抽出する広域調査は高価、かつ時間のかかる作業である。それゆえ、サッカーゲームの結果&lt;a href=&quot;#reference20&quot;&gt;[20]&lt;/a&gt;や気象条件&lt;a href=&quot;#reference21&quot;&gt;[21]&lt;/a&gt;から気分や感情を間接的に評価する論文が散見される。しかし、選択した指標が気分に関連があると&quot;期待できる&quot;限定された状況でしか利用できず、これらの方法の正確性は低いと言わざるを得ない。&lt;br /&gt;
過去５年間、ソーシャルメディアやブログなどから直接的に気分指標を抽出するといった、感情を監視するテクノロジは大幅に進展した&lt;a href=&quot;#reference10&quot;&gt;[10]&lt;/a&gt;&lt;a href=&quot;#reference12&quot;&gt;[12]&lt;/a&gt;&lt;a href=&quot;#reference15&quot;&gt;[15]&lt;/a&gt;&lt;a href=&quot;#reference17&quot;&gt;[17]&lt;/a&gt;。Twitterのフィードを活用した感情追跡に関してもである&lt;a href=&quot;#reference22&quot;&gt;[22]&lt;/a&gt;。Twitterにおいて、ポストはtweetと呼ばれ、140文字に限定される。任意の時点で収集した無数のツイートの集合は正確に社会的な気分や感情を表現していると言え、&lt;a href=&quot;#reference17&quot;&gt;[17]&lt;/a&gt;や&quot;Pulse of Nation (http://www.ccs.neu.edu/home/amislove/twittermood/)&quot;などのリアルタイム感情追跡技術を生み出した。&lt;br /&gt;
本論文では、日々送信されるツイートの大規模集合から抽出される感情を使って株式市場を予測できるかどうかを検討した。ツイートの感情測定は、2008/2/28から2008/12/19に渡り、２つのツールを利用して行った。１つ目はOpinionFinder（OF）であり、これはツイートをテキスト解析し、ポジティブかネガティブを判定する。２つ目はGoogle-Profile Mood States（GPOMS）であり、OFと同様に、ツイートをテキスト解析し、６次元に感情を判定する。これらツールにより得られた感情を時系列にソートし、DJIA変動との相関性を示し、DJIA変動を予測できることを評価する。評価の結果、従来から利用されているスタンダードな株式市場予測に、感情指標を追加することで、予測正確性が大幅に向上した。ここで、GPOMSによる平穏と幸福の指標は効果的であったが、OFによるポジティブ指標は効果的でなかった。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;２. Results&lt;/h3&gt;&lt;h3 class=&quot;sectitle&quot;&gt;A. データと方式概要&lt;/h3&gt;我々は、2008/2/28から2008/12/19の間に約2.7M ユーザにより投稿された 9,853,498ツイートを獲得した。これらツイートはid、投稿日時（GMT+0）、投稿タイプ、140文字以内の本文を含む。ストップワード（訳注：本文中に例示はないが下記に&quot;i feel&quot;などを抽出ワードに含めていることから、&quot;of&quot;などの前置詞、&quot;the&quot;などの冠詞が対象と思われる）や句読点を除去した後、同一日のものをグルーピングし、明確に感情表現された文言を含むツイートのみを抽出した。例えば、&quot;i feel&quot;,  &quot;i am feeling&quot;, &quot;i&#39;m feeling&quot;, &quot;i dont feel&quot;, &quot;I&#39;m&quot;, &quot;Im&quot;, &quot;I am&quot;, &quot; and &quot;makes me&quot; などにマッチするテキストである。スパムメッセージやリンク情報を避けるために、&quot;http:&quot;や&quot;www.&quot; などを正規表現でフィルタした。&lt;br /&gt;
&lt;a href=&quot;#fig1&quot;&gt;図１&lt;/a&gt;に示す通り、３フェースでDJIAの予測を行う。第一のフェーズでは、２つのツールを使って日々のツイートの集合から気分を抽出する。２つのツールとは（１）内容からポジティブかネガティブかの気分を計測するOFと、（２）内容から気分を６次元で計測するGOPMSである。この結果、７つの時系列気分データが得られ、その1つはOFによるもの、他の６つはGPOMSによるものであり、それぞれは社会的な気分の潜在的な側面を表現している。また、Yahoo! Financeから得られるDJIAの終値を元に、株価の時系列データを作成した。第二のフェーズでは、OFとGPOMSから得られた社会的な気分からDJIAの将来を予測できるかどうかを検証する。過去n日間において、OFとGPOMSにより得られた気分データとDJIAデータ間に相関性があるかを調べるためにGranger因果分析を利用した。第三フェーズでは、自己組織化ファジィニューラルネットワークを使って、社会的な気分のデータを利用することでDJIA予測モデルの正確性が向上する、という我々の仮説を検証する。なお、我々の興味は最適なDJIA予測モデルを提案することでなく、予測モデルの正確性に気分データが寄与するかを検証することである。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSoKw7J6lZVZ0YEjJg5dQ-VeS0iaZG7grf_47yrLho-gxK2fiNQ-RvK8bpnMZ-kxF4TY-mpKQaye8NmsL4kYrcNqzK-ZFmiuLEvfi64hHQXgNPkvS-4ggyUN_PEdoxs4eapfU4T0awVe9j/s1600/Fig1_stockmarket.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;316&quot; id=&quot;fig1&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSoKw7J6lZVZ0YEjJg5dQ-VeS0iaZG7grf_47yrLho-gxK2fiNQ-RvK8bpnMZ-kxF4TY-mpKQaye8NmsL4kYrcNqzK-ZFmiuLEvfi64hHQXgNPkvS-4ggyUN_PEdoxs4eapfU4T0awVe9j/s400/Fig1_stockmarket.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図１ 予測方法ダイアグラムとデータセット（１）大統領選挙と感謝祭の日のOponionFinderとGPOMSからの気分データの作成と検証（2008/10〜2008/12）、（２）DJIAと気分データ間の相関を分析するGranger causality analysis（2008/8〜2008/12）、（３）過去のDJIAと気分データを基礎とするDJIA予測を行う自己組織化ファジィニューラルネットワークの学習（2008/4〜2008/12）&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;h3 class=&quot;sectitle&quot;&gt;B. OFとGPOMSによる気分時系列データの生成&lt;/h3&gt;OpinionFinder（OF）は一般に入手可能なソフトウェアであり、文脈レベルの主観性を識別し、感情の二面性であるポジティブ・ネガティブを判定することで感情分析を行う&lt;a href=&quot;#reference25&quot;&gt;[25]&lt;/a&gt;。このツールによる広範なツイート集合の感情分析は既に実施されており&lt;a href=&quot;#reference26&quot;&gt;[26]&lt;/a&gt;、その研究では、OFにより得られた時系列の気分データが、その調査期間において、Gallupの消費者指数（http://www.gallup.com/poll/122840/Gallup-Daily-Economic-Indexes.aspx）やReuters/University of Michigan Surveys of Consumersとの間で相関性があることが分かった。OFの感情分析は、OFの&quot;辞書&quot;により、ツイート内容を解析し、ツイートの&quot;ポジティブ/ネガティブ比&quot;を決定する。そこで、我々は過去の研究&lt;a href=&quot;#reference37&quot;&gt;[37]&lt;/a&gt;&lt;a href=&quot;#reference38&quot;&gt;[38]&lt;/a&gt;&lt;a href=&quot;#reference24&quot;&gt;[24]&lt;/a&gt;にて実績のあるOF辞書を今回の検証に採用した。採用したOF辞書は2718個のポジティブワードと4912個のネガティブワードを持つ。この辞書により&quot;強気&quot;もしくは&quot;弱気&quot;として判定される言葉をそれぞれポジティブ、ネガティブとして選択した。そして、それぞれのツイートにおいてネガティブかポジティブのどちらの感情が支配的かを求める（ネガティブを表現する言葉数とポジティブを表現する言葉数を求め、多い方が支配的な感情とする）ことにより、ツイートを感情で二分化し、同一日 t にポストされた全ツイートに関してポジティブ/ネガティブ比を計算した。&lt;br /&gt;
他の感情分析ツールと同様に、OFはポジティブとネガティブに２種に区別する１次元モデルである&lt;a href=&quot;#reference23&quot;&gt;[23]&lt;/a&gt;。しかし、このモデルは簡略化されすぎており人間の複雑で様々な感情を無視していると言える。そこでより多次元で気分を計測するために、GPOMSを利用した。GPOMSは平穏、確信、警戒、活気、善意、幸福の６つの次元で気分を計測する。GPOMSは心理学において標準的なツールであるProﬁle of Mood States（POMS-bi）&lt;a href=&quot;#annotation2&quot;&gt;*2&lt;/a&gt;をベースとしている&lt;a href=&quot;#reference32&quot;&gt;[32]&lt;/a&gt;&lt;a href=&quot;#reference33&quot;&gt;[33]&lt;/a&gt;。POMSは72の質問（訳注：質問といっても「気が張っている」など感情を表現する語彙のみで構成される質問）に対する回答から感情を求めるツールである。一方、GPOMSではTwitterに適用するために（訳注：あいまいなテキストであるツイートに対応するために）、語彙数を72から946に拡張している。これは６カテゴリに属す72の語彙それぞれに関連する語彙を追加し拡張したものである。具体的に、2006年にGoogleにより、一般のWebページから抽出された約1兆の語彙から導出された2億5千の4-gramもしくは5-gramの集合を解析し、POMSの72の語彙と共起している単語を関連語彙とし、946個に拡張している&lt;a href=&quot;#annotation3&quot;&gt; *3&lt;/a&gt;&lt;a href=&quot;#reference35&quot;&gt;[35]&lt;/a&gt;&lt;a href=&quot;#reference36&quot;&gt;[36]&lt;/a&gt;。この拡張により、自然かつ多様な気分を抽出でき、その結果をPOMSの次元に落とし込むことができる。実際に、各ツイートを拡張辞書の語彙で照合し、マッチした場合、マッチ語彙の拡張元であるオリジナルの語彙の次元として得点をカウントする。そのため、各次元の得点は重み和となる（訳注：1つのツイートに次元Aの語彙が２つ、次元Bの語彙が１つが含まれ、各語彙の得点係数が同等ならば、このツイートで発生する得点は次元Aが２点、次元Bが１点となる）。なお、全てのデータセットや方法は&lt;a href=&quot;http://terramood.informatics.indiana.edu/data&quot;&gt;我々のWebサイト&lt;/a&gt;で利用可能である。OF、GPOMSの時系列データを比較するために、その日の前後k日間の平均と標準偏差を使ったzスコアにより正規化する。特定日 t の気分データをX&lt;sub&gt;t&lt;/sub&gt;、[t-k, t+k] 期間の平均を&lt;span style=&quot;text-decoration: overline;&quot;&gt;x&lt;/span&gt;(X&lt;sub&gt;tk&lt;/sub&gt;)、標準偏差をσ(X&lt;sub&gt;tk&lt;/sub&gt;)とすると、それらから導出されるzスコアは式(1)となる &lt;a href=&quot;#annotation4&quot;&gt; *4&lt;/a&gt;。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTiPV7cQkQDPmlmlSm8UVcJH6tB6-PwhajXBlcy2ieUIOrjckwKRpLs_vKGTqk7YrWWfg4XFD7X0p7LBz2WK0wTceCOU6E0Zd8KSx3gksri-XAM9Y-KdAets_RIhIs_UGj2O8bOUv5jyT7/s1600/Eq.1.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;53&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTiPV7cQkQDPmlmlSm8UVcJH6tB6-PwhajXBlcy2ieUIOrjckwKRpLs_vKGTqk7YrWWfg4XFD7X0p7LBz2WK0wTceCOU6E0Zd8KSx3gksri-XAM9Y-KdAets_RIhIs_UGj2O8bOUv5jyT7/s400/Eq.1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;C. 広域な社会文化的イベントに対するOF及びGPOMSの相互検証&lt;/h3&gt;まず、OF及びGPOMSにより社会的な気分の様々な側面が観測できるかどうかを検証した。実際には、2008/10/5〜2008/12/5の３ヶ月の間にポストされたツイートを&quot;社会的な気分&quot;を表現するデータとした。この期間は、大統領選挙（2008/11/4）と感謝祭（2008/11/27）を含んでおり、社会的な気分は、これらの社会文化的イベントによって、ユニークで重大、そして複雑な影響を受けると考えれる。それゆえ、OFとGPOMSの測定結果の検証がやりやすい。これが、この期間を標本として選択した理由である。結果を&lt;a href=&quot;#fig2&quot;&gt;図２&lt;/a&gt;に示す。なお、図２は縦軸を式(1)によるzスコア、横軸を標本取得期間としている。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjuz8pPDtg7pDX2rV1r7f9a-c0LdNWC3EsAOjtknUObKi3jKC6D9VOoTStMXi8FPwZEo_ificPAHfoK372-XB0UKW4B0y-6D1ZNNhzYPjTSwFQezy0LQkzlviVxz4EGsjiD3vHsTmzbnfz/s1600/Fig.2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; id=&quot;fig2&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjuz8pPDtg7pDX2rV1r7f9a-c0LdNWC3EsAOjtknUObKi3jKC6D9VOoTStMXi8FPwZEo_ificPAHfoK372-XB0UKW4B0y-6D1ZNNhzYPjTSwFQezy0LQkzlviVxz4EGsjiD3vHsTmzbnfz/s400/Fig.2.png&quot; width=&quot;357&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図２ 2008/10〜2008/12にポストされたツイートから抽出した気分状態。大統領選挙と感謝祭の日に連動していることがわかる&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;図２によると、OFは大統領選挙と感謝祭に連動していることが確認できた。両日ともに、大幅かつ急激にポジティブな反応が上昇していることがわかる。一方、GPOMSは、大統領選挙の前後３日間において分化した反応を示していた。2008/11/3に「平穏」のデータが急激に落ち込んでいる。これは社会全体の不安が上昇したためと見ることができる。大統領選挙日には、社会的な不安の低下を示す「平穏」データの反転（急激な上昇）、「活気」や「幸福」、「善意」の上昇を示している（訳注：「善意」は緩やかな上昇）。「活気」、「幸福」、「善意」の上昇は、気分の活性化や幸せな気分、友愛な気持ちを示している。2008/11/5あたりでは、GPOMSにおけるポジティブ成分、具体的に「平穏」、「確信」、「活気」、「幸福」が増加し続けていることがわかる。そして2008/11/5以降、全てのデータは徐々に平常ラインに戻っている。感謝祭に関しては、大統領選挙と同様に、気分の反応が分化していることが見てとれる。「幸福」気分の急激な上昇が見られる一方で、他の気分データの上昇は見られない。さらに、「幸福」データは当日1日だけの上昇に限定されており、その前後の日には特徴的な変化は見られないことがわかる &lt;a href=&quot;#annotation5&quot;&gt; *5&lt;/a&gt;。&lt;br /&gt;
図２によると、GPOMSの「幸福」データはOFのデータに類似している。GPOMSとOF間の関係を定量的に定義するために、重回帰を使ってそれら2つの相互関係を検証した。回帰モデルは式(2)で表される。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPtwQPTRlYu2eJ8F_wh9P0y-RZZAoR4NKZYIfgaddIq8QB5jfufY_ZRFM8NfDQbCqUVJJjCho1p7r8TVqtJPACMxu9Erl9gE4sUwA5cKa6nJLIVgVJHKgOFc_M9ubE8h_lxp_WXlv8rQ3O/s1600/Eq.2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;55&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPtwQPTRlYu2eJ8F_wh9P0y-RZZAoR4NKZYIfgaddIq8QB5jfufY_ZRFM8NfDQbCqUVJJjCho1p7r8TVqtJPACMxu9Erl9gE4sUwA5cKa6nJLIVgVJHKgOFc_M9ubE8h_lxp_WXlv8rQ3O/s400/Eq.2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;式(2)において、X&lt;sub&gt;i&lt;/sub&gt; (i=1,2,3,4,5,6)はGPOMSの6次元の時系列データを示し、それぞれ順に「平穏」、「警告」、「確信」、「活気」、「善意」そして「幸福」を示す（訳注：α、β、ε は偏回帰係数、独立変数X&lt;sub&gt;i&lt;/sub&gt; (i=1,2,...,6)から従属変数Yofを導出する重回帰式を求める）。&lt;br /&gt;
その結果を&lt;a href=&quot;#tbl1&quot;&gt;表1&lt;/a&gt;に示す。YofはX&lt;sub&gt;3&lt;/sub&gt;（「確信」）とX&lt;sub&gt;4&lt;/sub&gt;（「活気」）、そしてX&lt;sub&gt;6&lt;/sub&gt;（「幸福」）に相関している一方、X&lt;sub&gt;1&lt;/sub&gt;（「平穏」）やX&lt;sub&gt;2&lt;/sub&gt;（「警戒」）、X&lt;sub&gt;5&lt;/sub&gt;（「善意」）とは関係性が見られなかった。それゆえ、大統領選挙の日に発現する様々な社会的反応を表現するにはGPOMSの全次元が有意であるかもしれないが、OFのデータに相関している次元は一部だけと結論付ける。ともかく、GPOMSはOFなどの1次元しか持たないツールでは計測できない、ユニークな評価を行うことができる。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4ZMcln8TCAJ9w8-83IVktrdbntlCmxmmIZOCjmF_1MNK7xwJt2PyjNop3EI_1WDGZjHfimdRCbjg-bkLWfMvm6IF9ZyUD_Xmqcb7Xb774UoETRz9nx5SfQcZ1flQ_MN3TXq6ikxLHtjdD/s1600/Table.1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;148&quot; id=&quot;tbl1&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4ZMcln8TCAJ9w8-83IVktrdbntlCmxmmIZOCjmF_1MNK7xwJt2PyjNop3EI_1WDGZjHfimdRCbjg-bkLWfMvm6IF9ZyUD_Xmqcb7Xb774UoETRz9nx5SfQcZ1flQ_MN3TXq6ikxLHtjdD/s400/Table.1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;表１ GPOMSによるOFの重回帰結果（訳注：p値が有意水準（0.05）以下であり、t値や係数が高く相関が高いものはX&lt;sub&gt;3&lt;/sub&gt;, X&lt;sub&gt;4&lt;/sub&gt;, X&lt;sub&gt;6&lt;/sub&gt;であることが分かる）&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;h3 class=&quot;sectitle&quot;&gt;D. 二変量グレンジャー因果分析によるDJIAと気分の解析&lt;/h3&gt;前章までに社会文化的イベントと（ツイートから抽出した）気分の相関を明らかにした。ここでは、気分と株式市場の変化との相関を検討する。特にDJIAの終値との関係を見る。これには計量経済学のツールの1つであるグレンジャー因果分析を適用することにする。グレンジャー因果分析は、変数XがYを発生させるならば（XからYへの因果関係があるならば）Xの変化はYの変化の前に発生する（Xの変化がYの変化をもたらす）、という仮説に基づく。つまり、この仮説が成立するならば、時系列上で未来にずらしたXの値とYの値が統計的に有意な相関を持つと言えるだろう。しかし相関と因果関係は等価でない（必要十分条件ではない）。そこで、&lt;a href=&quot;#reference10&quot;&gt;[10]&lt;/a&gt;のように、グレンジャー因果分析 &lt;a href=&quot;#annotation6&quot;&gt; *6&lt;/a&gt;を使うことにした。我々は実際に気分と株式市場間に因果関係があることを検証したのでなく、ある変数（気分データ）が他（株式市場変化）を予測に足る情報を持っているかどうかを検証した（&lt;a href=&quot;#reference10&quot;&gt;[10]&lt;/a&gt;は「不安」データのみを気分データの指標として使っているが、我々はOF・GPOMSの全てのデータとDJIA間の関係を検証した）。&lt;br /&gt;
検証に使用したDJIAのデータ（D&lt;sub&gt;t&lt;/sub&gt;とする）は株式市場の過去の変化を反映した値と定義した。つまり、前日の終値と当日の終値の差分 D&lt;sub&gt;t&lt;/sub&gt; = DJIA[t] - DJIA[t-1] である（訳注：相関解析対象はDJIAの値そのものでなく、DJIAの1日間隔の変化量である。つまり、ある気分データの変化により、ある日の株価の上昇・下降が予測できるかどうかを検証している）。社会的な気分が株式市場の変化を予測するという仮説を検証するために、式(3)と(4)に示す２つの線形モデルの分散値を比較する &lt;a href=&quot;#annotation7&quot;&gt; *7&lt;/a&gt;。式(3)のモデル L1 は過去n日間のD&lt;sub&gt;t&lt;/sub&gt;（D[t-1], ..., D[t-n]）のみを使う。一方、式(4)のモデル L2 はD&lt;sub&gt;t&lt;/sub&gt;に加え、過去n日間のOFとGPOMSによる気分データX&lt;sub&gt;t&lt;/sub&gt;（X[t-1], ..., X[t-n]）も使う。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNzV0A2TvNqas3_KZGZDK_jaVeUYWz-STgF3a3x_6lG0qy1phSDmhEEAvf8Ap0QknXjNakHjz10r4t3Y3OuBmTKMSf74OtJwfI9CJ9vQarAxl-Z6-SQiQSedOYWnJqDcc2IYH2NPmGzJe4/s1600/Eq.3%252C+Eq.4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;117&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNzV0A2TvNqas3_KZGZDK_jaVeUYWz-STgF3a3x_6lG0qy1phSDmhEEAvf8Ap0QknXjNakHjz10r4t3Y3OuBmTKMSf74OtJwfI9CJ9vQarAxl-Z6-SQiQSedOYWnJqDcc2IYH2NPmGzJe4/s400/Eq.3%252C+Eq.4.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;我々は、2008/2/28から2008/11/3の期間で、L1とL2のモデルそれぞれにグレンジャー因果分析を適用し、両モデルを比較した。なお、比較において、大統領選挙や感謝祭の日などの社会文化的イベントの日は例外として除外した。先の期間に投稿された342255のツイートからOFやGPOMSの気分データを抽出し、DJIAデータはYahoo! Financeから獲得した（なお、市場が閉まっている週末や休日はDJIAのデータを得られない。我々はこの期間のDJIAを線形予測で埋めることはしていない。よって、ここで使用するDJIAデータは64日間（訳注：2008/2/28から2008/11/3の週末と休日の数は64日）のデータを使っていない結果である（訳注：つまり、月曜の Dt は前週の金曜を[t-1]として計算されている））。&lt;br /&gt;
グレンジャー因果の結果（&lt;a href=&quot;#tbl2&quot;&gt;表2&lt;/a&gt;）によると、高い信頼度で、気分データがDJIAの変化を予測しない、という帰無仮説は棄却される。すなわちβ&lt;sub&gt;i&lt;/sub&gt;（i=1, ..., n）が0でない（訳注：γの誤りだと思われる）。しかしながら、この結果はGPOMSの一次元にしか言えないことが表２から分かる。X&lt;sub&gt;1&lt;/sub&gt;（「平穏」）だけが、過去の日数を2〜6日とした際に、p値が0.05以下であり、高いグレンシャー因果性を持っていることがわかる。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrWKvyic4bx8U16qc8lQuhhzTCtfYdJcP4IkTQHuSVcYHNiUmvwBYR9hZcQfcP85IIVyZsB95IYVbFEixpEwiOk0o-RWFFoj04KJvP0H_lg7vuACvo_N2aNmGKN3g4uVEkQwMLVUDVL5O5/s1600/Table.2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;122&quot; id=&quot;tbl2&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrWKvyic4bx8U16qc8lQuhhzTCtfYdJcP4IkTQHuSVcYHNiUmvwBYR9hZcQfcP85IIVyZsB95IYVbFEixpEwiOk0o-RWFFoj04KJvP0H_lg7vuACvo_N2aNmGKN3g4uVEkQwMLVUDVL5O5/s400/Table.2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;表２ 2008/2/28〜2008/11/3の期間における気分データとDJIAのグランシャー因果関係結果（p値のみ、縦軸は過去の気分データの取り込み日数n）&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
視覚的にX&lt;sub&gt;1&lt;/sub&gt;とD&lt;sub&gt;t&lt;/sub&gt;を比較するために、&lt;a href=&quot;#fig3&quot;&gt;図３&lt;/a&gt;を用意した。なお、同じスケールとするために、D&lt;sub&gt;t&lt;/sub&gt;とX&lt;sub&gt;t&lt;/sub&gt;を式(1)を使ってzスコア化している。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXbqIspJzLqaFO2SfP5iTZzlpQrSEZ8sohQQ9qWt2oRoiLMiyns9qlZVUBjuHs2Yo7GCtzYDZi6X64KdccaEoS6J2T_MKEufSEHZ_OSwRotQt8SbVUxmbkaHo9RfyMtwu03eWqOZVnVKoF/s1600/Fig.3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;307&quot; id=&quot;fig3&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXbqIspJzLqaFO2SfP5iTZzlpQrSEZ8sohQQ9qWt2oRoiLMiyns9qlZVUBjuHs2Yo7GCtzYDZi6X64KdccaEoS6J2T_MKEufSEHZ_OSwRotQt8SbVUxmbkaHo9RfyMtwu03eWqOZVnVKoF/s400/Fig.3.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図３ 上部のグラフはDJIA変分データ（青：Z&lt;sub&gt;D&lt;sub&gt;t&lt;/sub&gt;&lt;/sub&gt;, Zスコアに正規化）と、３日だけ未来方向にずらした「平穏」気分データ（赤：Z&lt;sub&gt;&lt;sub&gt;X&lt;/sub&gt;t&lt;/sub&gt;）をオーバーラップさせている。このグラフによると、ずらしたZ&lt;sub&gt;&lt;sub&gt;X&lt;/sub&gt;t&lt;/sub&gt;はZ&lt;sub&gt;&lt;sub&gt;D&lt;/sub&gt;t&lt;/sub&gt;を予測していると言える。なお、ほぼ類似している領域をグレー表示にしている。真ん中および下部のグラフはそれぞれZ&lt;sub&gt;&lt;sub&gt;D&lt;/sub&gt;t&lt;/sub&gt;とZ&lt;sub&gt;&lt;sub&gt;X&lt;/sub&gt;t&lt;/sub&gt;を示している。&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;図３によると、「平穏」気分データとDJIAの変化は類似しており、３日だけ未来方向にずらした「平穏」気分データはDJIAの変化と同じように上下している。つまり、「平穏」気分データはDJIA変化を予測していると言える。実際に2008/8/1〜2008/10/30の期間におけるp値は表２に示した2008/2/28〜2008/11/3の期間のp値より低い（n=３の時、p値は0.009であった）&lt;a href=&quot;#annotation8&quot;&gt; *8&lt;/a&gt;。t-3日の気分データがDJIA変分データを追跡できなかった実験結果（訳注：図３におけるグレーでない領域）は、追跡できた結果と同様に有益である。2008/10/3における２データの大幅な乖離を例に挙げると、この日の市場は標準偏差の３倍ほどDJIAが急に上昇変化した。一方で「平穏」気分データは同時期において比較的横ばいであった。この結果は、金融安定化法案が成立し7000億ドルほどの公的資金を銀行救済に注入するというFRB（連邦準備制度理事会）の発表により、DJIAが突然に急進したことが原因と思われる。この乖離が示すのは、社会的気分によって不測のニュースを予測することは難しく、株式市場をモデリングするための重要な未知のファクタが別にあるということを示している。&lt;br /&gt;
&lt;h3 class=&quot;sectitle&quot;&gt;E. 感情を用いた株式市場予測のための非線形モデル&lt;/h3&gt;グレンジャー因果分析の結果によると、ある次元の気分とDJIA間に予測的な関係あることがわかった。しかし、グレンジャー因果分析は線形回帰を基礎としているが、社会上の気分と株式市場間の関係はほとんど非線形である。非線形効果及び、DJIAの予測モデルに社会的な気分が寄与するかどうかを検証するために、自己組織化ファジィニューラルネットワーク（SOFNN）モデル&lt;a href=&quot;#reference30&quot;&gt;[30]&lt;/a&gt;に着目した。ここで用いるSOFNNは、２入力１出力のシステムで出力データはDJIAの予測値である。２入力は(1)過去３日分のDJIA終値、(2)社会的な気分の時系列データの様々な順列の集合（詳細は後述）である。（この予測モデルにおいて、DJIAのみを入力する１入力１出力システムと、DJIAと社会的な気分を入力する２入力１出力システムに対して）統計学上の有意な性能差を見ることで、社会的な気分がDJIA終値の予測モデルを改善するという帰無仮説を支持もしくは棄却することができる。&lt;br /&gt;
SOFNNが株式市場の特徴を表現する非線形時系列データをデコードし&lt;a href=&quot;#reference28&quot;&gt;[28]&lt;/a&gt;、株式市場の予測に使われてきた&lt;a href=&quot;#reference29&quot;&gt;[29]&lt;/a&gt;実績を考慮し、予測モデルにSOFNNを使用した。特に我々が用いるSOFNNは、学習過程において自分自身のニューロンを自己組織化できる、５層ハイブリットニューラルネットワークである（訳注：&quot;ハイブリット&quot;の用語は自己組織化とニューラルネットワークの&quot;混成&quot;という意味で用いられていると思われる）。なお、我々は過去の研究で、電気需要予測に類似の自己組織化を行い成功している&lt;a href=&quot;#reference31&quot;&gt;[31]&lt;/a&gt;。&lt;br /&gt;
我々のSOFNNは過去n日間のDJIA終値と気分データを入力し、特定日tのDJIA終値を予測する（出力する）。nは３とする。表２によると、n=4で「平穏」気分データとDJIA（の変分）間のグレンジャー因果関係（p値）が低下しているため、n=3を採用した。全ての過去のデータ（SOFNNへの全入力データ）は[0, 1]間に線形にスケールイン・アウトされる。&lt;br /&gt;
モデルのパフォーマンスに影響を与えるため、SOFNNではいくつかのパラメータをチューニングしなくてはならない。公平な比較のためにモデルのパラメータは、全ての入力に関して同じ値とした。具体的に、δ＝0.04，σ＝0.01，k&lt;sub&gt;rmse&lt;/sub&gt;＝0.05，k&lt;sub&gt;d&lt;/sub&gt;(i) (i=1, ..., r)＝0.1とする。ここで、rは入力変数の次元数であり、k&lt;sub&gt;rmse&lt;/sub&gt;は予め設定される学習における平均二乗誤差の期待値である（訳注：σは標準偏差の期待値、δは変動係数（=σ/μ）の期待値と思われる。恐らく、学習結果をある程度の分布内に収束させるために設定するパラメータだと思われ、その分布を表現する手段として、δやσ、誤差の期待値を定義している。よって、σは標準偏差というより変曲点という意味に近い）。&lt;br /&gt;
DJIA終値の予測モデル SOFNN を適切に評価するために、SOFNNに入力するデータ期間を拡大し、2008/2/28〜2008/12/19とし、2/28〜11/28を学習期間、12/1〜12/19を検証期間とした。これは、検証期間の前月（つまりは学習期間）までは大きく乱高下しているのに対して、検証期間は安定的に遷移しており、また、まれな、もしくは大規模な社会文化的イベントがないためである。&lt;a href=&quot;#fig4&quot;&gt;図４&lt;/a&gt;は、2008年秋にDJIA終値が劇的に下落している様子を示している。このように突発的に変動している期間は、他の期間より株式市場の予測が困難であると言える。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCGmIXBzDxDeyc_ADxYM-YNN9KNVQDmqziL19dx8kJ_iq-XCrz-ymL6W64oCxZQkL6D8HmNQpirihJT3JC3mXuxoa7yQj0m7nA91Q3cDXzb0GfY7Fr7SqCFqfB_Zi8RQM5RZJSnMPY3R1g/s1600/Fig.4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;153&quot; id=&quot;fig4&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCGmIXBzDxDeyc_ADxYM-YNN9KNVQDmqziL19dx8kJ_iq-XCrz-ymL6W64oCxZQkL6D8HmNQpirihJT3JC3mXuxoa7yQj0m7nA91Q3cDXzb0GfY7Fr7SqCFqfB_Zi8RQM5RZJSnMPY3R1g/s400/Fig.4.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;図４ 2008/2/28〜2008/12/19のデイリーダウジョーンズ工業平均&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;「平穏」データのみ（多少の「幸福」も）がDJIA終値（の変化）とグレンジャー因果性を持つことを前の章で示した。しかし他の気分データも直接的にDJIA終値とグレンジャー因果性がないだけで、他のデータと組み合わせることでDJIA終値を予測できるかもしれない。例えば「幸福」データは独立データとしてDJIA終値に線形相関していないが、「平穏」データと組み合わせることでSOFNNの予測精度を向上させるかもしれない。この仮説を検証するために、SOFNNへの入力を７パタン用意した。I&lt;sub&gt;&lt;small&gt;0&lt;/small&gt;&lt;/sub&gt;は比較対象のベースラインとして用意したもので、{t-1, t-2, t-3}の過去３日分のDJIA終値データから特定日tのDJIA終値を予測するモデルである。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKIXSj_JBHEIIySsKbmsUN0kD3C3G4BvdOiFf71kiNEDlf5h7gvNhV9WuAP99nOAd6VWHbDbFEUQKhCTk-EdYiiWjgH55tQQQ5tgtpz5z6cBr-c3JSc5sxSFNX0Om7pvmPhFTymjltJyVK/s1600/Eq.5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;143&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKIXSj_JBHEIIySsKbmsUN0kD3C3G4BvdOiFf71kiNEDlf5h7gvNhV9WuAP99nOAd6VWHbDbFEUQKhCTk-EdYiiWjgH55tQQQ5tgtpz5z6cBr-c3JSc5sxSFNX0Om7pvmPhFTymjltJyVK/s400/Eq.5.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;DJIA&lt;sub&gt;&lt;small&gt;t-3,2,1&lt;/small&gt;&lt;/sub&gt;およびX&lt;sub&gt;&lt;small&gt;1,t-3,2,1&lt;/small&gt;&lt;/sub&gt;はそれぞれt-3、t-2、t-1の日におけるDJIA終値、GPOMSの次元1のデータを示す。（訳注：I&lt;sub&gt;&lt;small&gt;1&lt;/small&gt;&lt;/sub&gt;はDJIA&lt;sub&gt;&lt;small&gt;t-3,2,1&lt;/small&gt;&lt;/sub&gt;とX&lt;sub&gt;&lt;small&gt;1,t-3,2,1&lt;/small&gt;&lt;/sub&gt;を入力とし、I&lt;sub&gt;&lt;small&gt;1,2&lt;/small&gt;&lt;/sub&gt;はDJIA&lt;sub&gt;&lt;small&gt;t-3,2,1&lt;/small&gt;&lt;/sub&gt;とX&lt;sub&gt;&lt;small&gt;1,t-3,2,1&lt;/small&gt;&lt;/sub&gt;、X&lt;sub&gt;&lt;small&gt;2,t-3,2,1&lt;/small&gt;&lt;/sub&gt;を入力とするモデル。）I&lt;sub&gt;&lt;small&gt;1,3&lt;/small&gt;&lt;/sub&gt;、I&lt;sub&gt;&lt;small&gt;1,4&lt;/small&gt;&lt;/sub&gt;、I&lt;sub&gt;&lt;small&gt;1,5&lt;/small&gt;&lt;/sub&gt;、I&lt;sub&gt;&lt;small&gt;1,6&lt;/small&gt;&lt;/sub&gt;も同様である。例えば、I&lt;sub&gt;&lt;small&gt;1,6&lt;/small&gt;&lt;/sub&gt;はDJIA&lt;sub&gt;&lt;small&gt;t-3,2,1&lt;/small&gt;&lt;/sub&gt;とX&lt;sub&gt;&lt;small&gt;1,t-3,2,1&lt;/small&gt;&lt;/sub&gt;、X&lt;sub&gt;&lt;small&gt;6,t-3,2,1&lt;/small&gt;&lt;/sub&gt;を入力とする。&lt;br /&gt;
GPOMSとOFの違いを見るために、I&lt;sub&gt;&lt;small&gt;OF&lt;/small&gt;&lt;/sub&gt;を順列に追加した。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil5LC3ikz77Y14nKK0zZEqzhn1gzuPb8OJku0ktU8UA0iDDXSX9eGxEgLP98r4Qa_0GUhillK-EvgzZs1laNIxGFwgEZAwQZ7aTIq8lVd6H0OQ4QV0wdRzTz3BlCBIjmJZs6UrkAbnD9L3/s1600/Eq.6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;28&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil5LC3ikz77Y14nKK0zZEqzhn1gzuPb8OJku0ktU8UA0iDDXSX9eGxEgLP98r4Qa_0GUhillK-EvgzZs1laNIxGFwgEZAwQZ7aTIq8lVd6H0OQ4QV0wdRzTz3BlCBIjmJZs6UrkAbnD9L3/s320/Eq.6.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;2008/12/1〜12/19において、平均絶対誤差率（MAPE: Mean Absolute Percentage Error）&lt;a href=&quot;#annotation9&quot;&gt; *9&lt;/a&gt;と方向精度（株価の上昇もしくは下落の正確性）を用いて、予測精度を検証した。結果を&lt;a href=&quot;#tbl3&quot;&gt;表３&lt;/a&gt;に示す。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpJO1JWrPuuaT_AKIH9AGEAGFo9cTLp8otbgttrBILyBYfxpvHOVrRPN6GjFmHpNqzFAp8gxKtW-zveeAmimSe3kAK3ROT3Q-lkcSRVsdBWWYRQtgZj9-jsI0qrBzKMzC7mNvwdUVq9Dke/s1600/Tbl.3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;46&quot; id=&quot;tbl3&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpJO1JWrPuuaT_AKIH9AGEAGFo9cTLp8otbgttrBILyBYfxpvHOVrRPN6GjFmHpNqzFAp8gxKtW-zveeAmimSe3kAK3ROT3Q-lkcSRVsdBWWYRQtgZj9-jsI0qrBzKMzC7mNvwdUVq9Dke/s400/Tbl.3.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;表３ SOFNNによるDJIA予測精度&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;この結果からはいくつかの結論が導ける。第一に、OFによる気分データを加えたモデル（I&lt;sub&gt;&lt;small&gt;OF&lt;/small&gt;&lt;/sub&gt;）はDJIAの過去の結果のみを利用したベースラインモデル（I&lt;sub&gt;&lt;small&gt;0&lt;/small&gt;&lt;/sub&gt;）と比較して効果が見られなかった。これはグレンジャー因果分析の結果を支持するものである。&lt;br /&gt;
第二に、「平穏」データを加えたモデル（I&lt;sub&gt;&lt;small&gt;1&lt;/small&gt;&lt;/sub&gt;）が最も高い精度で予測した。MAPEに関して、最も高い2.13％（I&lt;sub&gt;&lt;small&gt;1,3&lt;/small&gt;&lt;/sub&gt;）と1.95％（I&lt;sub&gt;&lt;small&gt;OF&lt;/small&gt;&lt;/sub&gt;）に対して1.3％、方向精度に関して、73.3％（I&lt;sub&gt;&lt;small&gt;OF&lt;/small&gt;&lt;/sub&gt;）や46.7％（I&lt;sub&gt;&lt;small&gt;1,3&lt;/small&gt;&lt;/sub&gt;）に対して86.7％であり、ベースラインモデルを改善できたと言える。第三に、I&lt;sub&gt;&lt;small&gt;1,3&lt;/small&gt;&lt;/sub&gt;やI&lt;sub&gt;&lt;small&gt;1,4&lt;/small&gt;&lt;/sub&gt;はMAPEと方向精度両方ともに予測精度を下げていた。これは、「確信 X&lt;sub&gt;&lt;small&gt;3&lt;/small&gt;&lt;/sub&gt;」と「活気 X&lt;sub&gt;&lt;small&gt;4&lt;/small&gt;&lt;/sub&gt;」はDJIA終値の予測に使える情報を持っておらず、チャンスレベル（正答率）が減少したと言える。X&lt;sub&gt;&lt;small&gt;6&lt;/small&gt;&lt;/sub&gt;とX&lt;sub&gt;&lt;small&gt;1&lt;/small&gt;&lt;/sub&gt;を加えたモデルI&lt;sub&gt;&lt;small&gt;1,6&lt;/small&gt;&lt;/sub&gt;はMAPEが最も低く、方向精度もそこそこ良かった（80％）。X&lt;sub&gt;&lt;small&gt;6&lt;/small&gt;&lt;/sub&gt;（「幸福」データ）はDJIAに対してグレンジャー因果性が少なかったにも関わらず（表２によるとずらした日数=3のときp=0.723であった）、この結果には驚かされる。しかし「平穏」データモデルと比較すると、予測精度は低い。&lt;br /&gt;
続けて、86.7％の方向精度を達成した結果の統計上の有意性を調べるために、結果の偶発性を検討した。&lt;br /&gt;
二項分布によると、2008/12/1〜2008/12/19の20日間から週末分を引いた15日間において、各試行の成功率を50％と仮定すると、87.6％を達成する確率は0.32％となった。2/28〜12/20から週末を除いた全期間は、20日間の検証期間の約10.9倍の長さである。全期間においてランダムに抽出した20日間に、上記で言及した確率が偶然に維持される率は、1-(1-0.032)^10.9 = 0.0343つまり3.4％である。SOFNNにおける高い方向精度は偶然によるものでも、良い結果が導出される特別な期間を検証期間としたのでもない。&lt;br /&gt;
さらに（上記の非線形予測モデルで「平穏」と「幸福」を利用した場合に予測精度が向上したことから、念のために）、F検定により、DJIAへの「平穏（X&lt;sub&gt;&lt;small&gt;1&lt;/small&gt;&lt;/sub&gt;）」と「幸福（X&lt;sub&gt;&lt;small&gt;6&lt;/small&gt;&lt;/sub&gt;）」の線形効果を検証した。なお、F検定は下記に示すフルモデル（F、「平穏」と「幸福」を利用し、縮退モデルRを包含（ネスト）している）と縮小モデル（R、「平穏」のみを利用）を用意した。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGqQaoxQdIAc2d7i5SPJZV9_fjCyHVunI5QVH0I7ae45vwN1BrdOlB2yqJakU5VY4wSZDeh9nBytl97fbYZQxRzmQk5Mis2OFFGWQqCa9SVB3p0Vw-L7nHEu-OgF6g1NmNq3snvpTUo36H/s1600/Eq.7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;86&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGqQaoxQdIAc2d7i5SPJZV9_fjCyHVunI5QVH0I7ae45vwN1BrdOlB2yqJakU5VY4wSZDeh9nBytl97fbYZQxRzmQk5Mis2OFFGWQqCa9SVB3p0Vw-L7nHEu-OgF6g1NmNq3snvpTUo36H/s400/Eq.7.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;その結果、P値は0.66、F統計量は0.53であった。これはX&lt;sub&gt;&lt;small&gt;1&lt;/small&gt;&lt;/sub&gt;とX&lt;sub&gt;&lt;small&gt;6&lt;/small&gt;&lt;/sub&gt;を線形に組合せた結果よりX&lt;sub&gt;&lt;small&gt;1&lt;/small&gt;&lt;/sub&gt;を単独で利用した結果が良いということを示している。SFONN予測モデルでは、X&lt;sub&gt;&lt;small&gt;1&lt;/small&gt;&lt;/sub&gt;とX&lt;sub&gt;&lt;small&gt;6&lt;/small&gt;&lt;/sub&gt;を組み合わせることで良い結果を示していたことから、気分の次元間の関係は非線形であると結論づけることができる。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;3. ディスカッション&lt;/h3&gt;本論文では、長期間のtwitter.comへのツイート集合から計測した社会的な気分とDJIA終値の関係性、および社会的な気分によるDJIA終値の予測の可能性を検証した。検証では、ごく簡単なテキスト処理技術を使って長期間に渡り収集したツイートから社会的な気分を追跡できる（気分の変化を計測できる）こと、および社会的な気分は様々な社会文化的なドライバに反応して変化することを明らかにした。計測した7次元の気分データにおいて、一部のデータだけがDJIA終値とグレンジャー因果性があり、社会的な気分の変化値は3、4日後のDJIA終値と一致していた。驚くことに、ポジティブかネガティブかで気分を判定するOpinionFinderのデータではそのような結果は得られず、GPOMSの一次元である「平穏」データのみで得られた。それゆえ、「平穏」データはOFによる概略的なデータより、DJIA終値を予測していると結論づけた。過去のDJIA終値と気分データを用いて学習させた自己組織化ファジィニューラルネットワークは、DJIA終値の予測モデルの精度を向上させた。この結果は、過去のDJIA終値と気分データを入力とする&quot;比較的&quot;に基本的なSOFNNモデルによるものである。ゆえに、ニュースや関連する様々な経済指標を用いる、より洗礼された株式市場モデルを構築することで、同等もしくはそれ以上の精度となると期待している。さらに、これらの結果は（訳注：株式市場予測に適用できることを示したという意味で）既存の気分追跡ツールに影響を与えるだけでなく、人々が体験するポジティブ・ネガティブ感情や幸福、人生への満足の度合いを評価する&quot;自己申告による主観的な幸福度&quot;調査にも影響を与えるだろう&lt;a href=&quot;#reference40&quot;&gt;[40]&lt;/a&gt;。そのような幸福度調査は比較的高価で時間を要する。それにもかかわらず、目的の次元に関して社会的な気分を計測できず、結果、特定の社会経済的指標を導出できないこともある。一方Twitterフィードからの社会的な気分の分析は、自動的、高速、無コストであり、さらに広域な範囲を対象にでき、最適に様々な次元での社会的気分データを計測することができる。&lt;br /&gt;
我々の分析はいくつかの重要な因子が欠けており、それらは今後の課題である。第一の課題は、我々の分析は特定地域への限定や、ワールドワイドの母集団における特定のサブセット（コミュニティ）への限定ができるよう設計されていないことである。特定の期間のTwitter.comへのアクセスは主に英語を話しU.Sに居住している人によるとは言え、US株式市場は世界中の人々の影響を受けるため、このアプローチは適切と思われる。Twitter.comのユーザ数は国際的に増加しており、特定の地域や特定の文化によるエラーを排除するために、地域や言語による分解能を持たせることは課題である（GPSを持ったスマートフォンからの利用も増加していることから、そのような分解能を持つことは可能と思われる）。第二の課題は、計測した気分データの評価のために２ツールの結果を比較検証したにもかかわらず、社会的な気分に関しても、Twitter.comコミュニティ（母集団）における特定の標本に関しても、&quot;ground truth&quot;つまり正解データを知らないことである。社会的な気分とTwitterのようなコミュニティから抽出した（社会的と我々が呼んでいる）気分データの直接評価に関する研究を進めることが、この問題の唯一の解決方法である（訳注：恐らく、別のソーシャルメディアからの気分データ抽出、別のツールからの気分データ抽出、国勢調査などからの気分データ抽出などとの比較をして、抽出した気分データがいかに最適解かを示したり、その気分データを抽出した標本の取り方が最適解かを示すなど、地道な調査が必要だと言っている）。第三の課題は、本論文の結果はTwitterフィードから得られた気分データ間の予測的関係性を強く暗示するものであるが、気分データとDJIA終値を結びつける因果的なメカニズムに関しては何も示していない。一般の人々は金融の専門家としてDJIAに投資しており、その意思決定や投資の結果としての株式市場は投資家の気分に影響されていると推測でき、何かしらの因果関係があると思われるが、その検証やメカニズムの導出は今後の課題とする。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;謝辞&lt;/h3&gt;本研究はNSF Grant BCS #1032101（米国国立科学財団（National Science Foundation）の行動認識科学部門（Division of Behavioral and Cognitive Sciences）の助成金（グラント））を受けている。David Crandell と Michael Nelsonには初期バージョンに対する有益なコメントを頂いた。また、Daniel Kahnemanにはご指導頂いた。心より感謝を申し上げる。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;chaptitle&quot;&gt;Reference&lt;/h3&gt;&lt;div id=&quot;reference1&quot;&gt;[1] Fama, Eugene F, e. a. (1969) International Economic Review 10, 1–21.&lt;/div&gt;&lt;div id=&quot;reference2&quot;&gt;[2] Fama, E. F. (1991) Journal of Finance 46, 1575–617.&lt;/div&gt;&lt;div id=&quot;reference3&quot;&gt;[3] H.Cootner, P. (1964) The random character of stock market prices. (MIT).&lt;/div&gt;&lt;div id=&quot;reference4&quot;&gt;[4] Fama, E. F. (1965) The Journal of Business 38, 34–105.&lt;/div&gt;&lt;div id=&quot;reference5&quot;&gt;[5] Qian, Bo, Rasheed, &amp;amp; Khaled. (2007) Applied Intelligence 26, 25–33.&lt;/div&gt;&lt;div id=&quot;reference6&quot;&gt;[6] Gallagher, L. A &amp;amp; Taylor, M. P. (2002) Southern Economic Journal 69, 345–362.&lt;/div&gt;&lt;div id=&quot;reference7&quot;&gt;[7] Kavussanos, M &amp;amp; Dockery, E. (2001) Applied Financial Economics 11, 573–79.&lt;/div&gt;&lt;div id=&quot;reference8&quot;&gt;[8] Butler, K. C &amp;amp; Malaikah, S. J. (1992) Journal of Banking and Finance 16, 197–210.&lt;/div&gt;&lt;div id=&quot;reference9&quot;&gt;[9] Schumaker, R. P &amp;amp; Chen, H. (2009) ACM Trans. Inf. Syst. 27, 12:1–12:19.&lt;/div&gt;&lt;div id=&quot;reference10&quot;&gt;[10] Gilbert, E &amp;amp; Karahalios, K. (2010) Widespread worry and the stock market.&lt;/div&gt;&lt;div id=&quot;reference11&quot;&gt;[11] Gruhl, D, Guha, R, Kumar, R, Novak, J, &amp;amp; Tomkins, A. (2005) The predictive power of online chatter. (ACM, New York, NY, USA), pp. 78–87.&lt;/div&gt;&lt;div id=&quot;reference12&quot;&gt;[12] Mishne, G &amp;amp; Glance, N. (2006) Predicting Movie Sales from Blogger Sentiment. AAAI 2006 Spring Symposium on Computational Approaches to Analysing Weblogs&lt;/div&gt;&lt;div id=&quot;reference13&quot;&gt;[13] S. Asur and B. A. Huberman 2010 Predicting the Future with Social Media arXiv:1003.5699v1&lt;/div&gt;&lt;div id=&quot;reference14&quot;&gt;[14] Choi, H &amp;amp; Varian, H. (2009) Predicting the present with google trends., (Google), Technical report.&lt;/div&gt;&lt;div id=&quot;reference15&quot;&gt;[15] Liu, Y, Huang, X, An, A, &amp;amp; Yu, X. (2007) ARSA: a sentiment-aware model for predicting sales performance using blogs. (ACM, New York, NY, USA), pp. 607–614.&lt;/div&gt;&lt;div id=&quot;reference16&quot;&gt;[16] Dolan, R. J. (2002) Science 298, 1191–1194.&lt;/div&gt;&lt;div id=&quot;reference17&quot;&gt;[17] Dodds, Peter. (2009) Journal of Happiness July, doi: 10.1007/s10902-009-9150-9&lt;/div&gt;&lt;div id=&quot;reference18&quot;&gt;[18] Damasio, A. R. (1994) Descartes’ error : emotion, reason, and the human brain. (Putnam), pp. xix, 312 p.+.&lt;/div&gt;&lt;div id=&quot;reference19&quot;&gt;[19] Nofsinger, J. (2005) Journal of Behaviour Finance. 6, 144–160.&lt;/div&gt;&lt;div id=&quot;reference20&quot;&gt;[20] Edmans, A, Garca, D, &amp;amp; Norli, . (2007) Journal of Finance 62, 1967–1998.&lt;/div&gt;&lt;div id=&quot;reference21&quot;&gt;[21] Hirshleifer, D &amp;amp; Shumway, T. (2003) Journal of Finance 58, 1009–1032.&lt;/div&gt;&lt;div id=&quot;reference22&quot;&gt;[22] Pak, A &amp;amp; Paroubek, P. (2010) Twitter as a Corpus for Sentiment Analysis and Opinion Mining. (European Language Resources Association (ELRA), Valletta, Malta).&lt;/div&gt;&lt;div id=&quot;reference23&quot;&gt;[23] Pang, B &amp;amp; Lee, L. (2008) Foundations and Trends in Information Retrieval 2, 1–135.&lt;/div&gt;&lt;div id=&quot;reference24&quot;&gt;[24] Wilson, T, Wiebe, J, &amp;amp; Hoffmann, P. (2005) Recognizing Contextual Polarity in Phrase-Level Sentiment Analysis. (Vancouver, CA).&lt;/div&gt;&lt;div id=&quot;reference25&quot;&gt;[25] Wilson, T, Hoffmann, P, Somasundaran, S, Kessler, J, Wiebe, J, Choi, Y, Cardie, C, Riloff, E, &amp;amp; Patwardhan, S. (2005) OpinionFinder: A system for subjectivity analysis. pp. 34–35.&lt;/div&gt;&lt;div id=&quot;reference26&quot;&gt;[26] O’Connor, B, Balasubramanyan, R, Routledge, B. R, &amp;amp; Smith, N. A. (2010) From Tweets to Polls: Linking Text Sentiment to Public Opinion Time Series.&lt;/div&gt;&lt;div id=&quot;reference27&quot;&gt;[27] Diener E, Diener M &amp;amp; Diener D (2009) Factors Predicting the Subjective Well-Being of Nations. Social Indicators Research Series 38:43-70&lt;/div&gt;&lt;div id=&quot;reference28&quot;&gt;[28] Lapedes, A &amp;amp; Farber, R. (1987) Nonlinear signal processing using neural network: Prediction and system modeling, (Los Alamos National Lab Technical Report), Technical report.&lt;/div&gt;&lt;div id=&quot;reference29&quot;&gt;[29] Zhu, X, Wang, H, Xu, L, &amp;amp; Li, H. (2008) Expert Syst. Appl. 34, 3043–3054.&lt;/div&gt;&lt;div id=&quot;reference30&quot;&gt;[30] Leng, G, Prasad, G, &amp;amp; McGinnity, T. M. (2004) Neural Netw. 17, 1477–1493.&lt;/div&gt;&lt;div id=&quot;reference31&quot;&gt;[31] Mao, H, Zeng, X.-J, Leng, G, Zhai, Y, &amp;amp; Keane, A. J. (2009) IEEE Transaction on Power System. 24, 1080–1090.&lt;/div&gt;&lt;div id=&quot;reference32&quot;&gt;[32] Norcross, J. C, Guadagnoli, E, &amp;amp; Prochaska, J. O. (2006) Journal of Clinical Psychology 40, 1270 – 1277.&lt;/div&gt;&lt;div id=&quot;reference33&quot;&gt;[33] McNair, D, Heuchert, J. P, &amp;amp; Shilony, E. (2003) Proﬁle of mood states. Bibliography 1964–2002. (Multi-Health Systems).&lt;/div&gt;&lt;div id=&quot;reference34&quot;&gt;[34] Pepe, A &amp;amp; Bollen, J. (2008) Between conjecture and memento: shaping a collective emotional perception of the future.&lt;/div&gt;&lt;br /&gt;
&lt;div id=&quot;annotation1&quot;&gt;*1：将来における全ての情報を織り込んだ上で現在の株価が形成されるというマクロ視点での株式市場仮説。つまり、世の中の情報を元に効率的に株式市場は運営されているため、その情報を的確に収集することで、株価の予測が可能となる。逆にそのような情報を集めてもレアな株式を見つけることはできないと言える。&lt;/div&gt;&lt;div id=&quot;annotation2&quot;&gt;*2：人の性格を測定するツールでなく、環境などにより変化する&quot;一時的な感情や気分&quot;を測定するツール。回答者は72の質問（&lt;a href=&quot;http://www.kanekoshobo.co.jp/np/inner/2&quot;&gt;日本版POMS&lt;/a&gt;では質問数が65であるなど違いがある）に対して、「非常に当てはまる」や「当てはまらない」などの5つのレベルで回答し、その結果、回答者の感情が６つの尺度で表現される。６つの尺度は緊張－不安（Tension-Anxiety）、抑うつ－落込み（Depression-Dejection）、怒り－敵意（Anger-Hostility）、活気（Vigor）、疲労（Fatigue）、混乱（Confusion）である。72個の質問は６つのカテゴリにそれぞれ属しており、各質問カテゴリの得点に応じて、回答者の感情を測定する。&lt;/div&gt;&lt;div id=&quot;annotation3&quot;&gt;*3：&lt;a href=&quot;http://googlejapan.blogspot.com/2007/11/n-gram.html&quot;&gt;ありがたいことにGoogle日本も大規模日本語n-gramデータを公開してくれている。&lt;/a&gt;&lt;/div&gt;&lt;div id=&quot;annotation4&quot;&gt;*4：結局Zスコア向け平均と標準偏差を導出する際に用いた日数 k の具体例は示されていない。精度を出すためにそこそこの長い日数としたのだろうか。&lt;/div&gt;&lt;div id=&quot;annotation5&quot;&gt;*5：「善意」は変化が激しく気分の検証や別モデルへのパラメータ利用などに向かないようだ。また、感謝祭の前後数日間を通して「警告」が上昇しているがこれは何を意味しているのか&lt;/div&gt;&lt;div id=&quot;annotation6&quot;&gt;*6：グレンジャー因果分析における&quot;因果&quot;は言葉としての&quot;因果&quot;と等価でなく、相関性から予測可能という意味に近い&lt;/div&gt;&lt;div id=&quot;annotation7&quot;&gt;*7：式(3)によるD&lt;sub&gt;t&lt;/sub&gt;と式(4)によるD&lt;sub&gt;t&lt;/sub&gt;のそれぞれの分散値を比較して、両モデルの予測精度を比較する、と言いたいのだと思うが、γが0でない帰無仮説を棄却する・しないの話だけであれば、モデルL2だけで十分だと思うのだが、納得いかない。&lt;/div&gt;&lt;div id=&quot;annotation8&quot;&gt;*8：グレンシャー因果分析で用いた線形モデルでは、過去のn日分のデータを取り込んでいるのに対して、図３の比較では３日前のデータを未来方向にずらして、DJIA変分データと比較している違いに注意すること&lt;/div&gt;&lt;div id=&quot;annotation9&quot;&gt;*9：計測期間における実測値と予測値の差分と実測値の比の平均。計測期間をn、ある時刻t (t ∈ n)における実測値をA&lt;sub&gt;&lt;small&gt;t&lt;/small&gt;&lt;/sub&gt;、予測値をF&lt;sub&gt;&lt;small&gt;t&lt;/small&gt;&lt;/sub&gt;とする時、MAPE Mは&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0h8YPxXV4sdwyoEfFgXMhUxsrE_QnH6s176E4Z1ed3FJjIXacxpGPn24i-S53mC66kJy9826Zid9RDyWR5wshHjLzuCP22WNR4V_g6ICeXVOn6rQhgpblsRwt243TRiw7rnbtH64iiVOi/s1600/anoEq.1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0h8YPxXV4sdwyoEfFgXMhUxsrE_QnH6s176E4Z1ed3FJjIXacxpGPn24i-S53mC66kJy9826Zid9RDyWR5wshHjLzuCP22WNR4V_g6ICeXVOn6rQhgpblsRwt243TRiw7rnbtH64iiVOi/s1600/anoEq.1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;となる&lt;/div&gt;&lt;h3 class=&quot;chaptitle&quot;&gt;感想&lt;/h3&gt;・本文の「ディスカッション」にも指摘されているように、特定の地域、特定のコミュニティに限定した検証をやってみたい。果たして十分な母数が集まるか不明だが金融業界の人や株式市場についてつぶやいている人に限定するとか。うーん、よりノイズが乗るかな。&lt;br /&gt;
・相関を1日単位でなく、時間単位で見てみたい。つまり、リアルタイム解析に耐えれるモデルかどうかを検証してみたい。&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceromondo.blogspot.com/feeds/244031390283876517/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ceromondo.blogspot.com/2011/12/twitter-mood-predicts-stock-market.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/244031390283876517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/244031390283876517'/><link rel='alternate' type='text/html' href='http://ceromondo.blogspot.com/2011/12/twitter-mood-predicts-stock-market.html' title='Twitter mood predicts the stock market.'/><author><name>goemondo</name><uri>http://www.blogger.com/profile/17435609166287599853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBzzt2y_e87Gq_DyMOP7hLXjtzTK0S-UI-KcbukCTAe68exHWX3dwUwrXC1u6f0jRaJzF8-DbBz8Mxokx38sT-4s94c4VvJ2By6g6075v6WksNTNZsddzCT4p-IYM4Sg/s220/profile.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSoKw7J6lZVZ0YEjJg5dQ-VeS0iaZG7grf_47yrLho-gxK2fiNQ-RvK8bpnMZ-kxF4TY-mpKQaye8NmsL4kYrcNqzK-ZFmiuLEvfi64hHQXgNPkvS-4ggyUN_PEdoxs4eapfU4T0awVe9j/s72-c/Fig1_stockmarket.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7457791004653031882.post-6469076647081887082</id><published>2011-10-02T18:14:00.185+09:00</published><updated>2011-10-25T22:46:31.743+09:00</updated><title type='text'>Gartner Hype Cycleから今後の世界を占ってみる</title><content type='html'>このポストでは前回のポストで得たGartner&amp;nbsp;ハイプサイクルの柱となっている技術グループを基に、テクノロジは我々を今後どのような世界へと導くのか、そのマイルストンとしての直近の技術動向を占いたいと思います。&lt;br /&gt;
&lt;br /&gt;
さて、前回のポストにて導出したGartnerハイプサイクルの技術グループは以下の通りです。&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;ol&gt;&lt;li&gt;クラウド技術&lt;/li&gt;
&lt;li&gt;多量データ解析技術&lt;/li&gt;
&lt;li&gt;コンテキスト収集・分析・利用技術&lt;/li&gt;
&lt;li&gt;仮想技術（仮想化でなくVirtualワールド技術）&lt;/li&gt;
&lt;li&gt;知覚・認知技術&lt;/li&gt;
&lt;li&gt;ソーシャル技術&lt;/li&gt;
&lt;li&gt;デバイス技術&lt;/li&gt;
&lt;li&gt;先物技術&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;
この分類を見ると、否が応でも&quot;ある世界&quot;が見えてきます。&lt;br /&gt;
それは、&quot;モノや動物、植物など全てにセンサが付加し、クラウドにより提供されるサービスに接続され、その生データを解析し有用な情報に変換し、自然なインタフェースで人、モノ、動植物に還元される巨大なネットワーク&quot;による世界です。&lt;br /&gt;
具体的に、人間であれば「モバイル端末」に搭載されるセンサ、牛などの動物であれば「センサ」、モノであれば「RFID」が付加され、「インターネット」を介して「ソーシャルネットワークサービス」に接続し、センサなどから収集された生データもしくはその「集合体」である「コンテキスト」を「クラウドコンピューティング」の計算リソースが解析して有用な情報を創造し、仮想世界を覗いたり、仮想現実や仮想アシスタントをインタフェースとして、より自然なフィードバックを受ける世界です。その世界では人と人、人とモノ、モノとモノが「M2M（Machine to Machine or Man 2 Machine）」のように通信することもあるでしょう。その接続の際には「生体認証」により知らずにプライバシ保護されることになります。&lt;br /&gt;
まさに、社会的ネットワーク（SNS）であり「Internet Of Things」な世界です。&lt;a href=&quot;http://allthingsd.com/20110714/cisco-reminds-us-once-again-how-big-the-internet-is-and-how-big-its-getting/&quot;&gt;Internet Of Things&lt;/a&gt;にあるように、会社におけるスケジュール、車の状態、渋滞情報、代替交通手段、コーヒーメーカなどの全ての情報を考慮し、目覚まし時計が「あと5分いつもより余計に寝れる」状態を作る、なんて世界です。&lt;br /&gt;
多少気持ち悪いですが、慣れると戻れない世界でしょうか。ただ、望むと望まざるとに関わらず、このような世界に近づくことになるでしょう。&lt;br /&gt;
&lt;br /&gt;
もしかすると、量子コンピュータの実現により、クラウドを経由しない、よりフラットにクライアント（モノ、動植物、人、企業）が接続されるP2Pなネットワーク構成になるかもしれませんが、実現される世界は変わりません。&lt;br /&gt;
過去、クライアントサーバ型からPCへ、その後クラウドへと計算リソースがサーバサイドからクライアント、またサーバへと揺り動いてきましたが、おそらく量子コンピュータの出現までは次の揺り戻しはないと思っています。IntelやSamsungなどの努力により、チップ面積比で言うとムーアの法則の通りに半導体のプロセス微細化は進んでいます。今後もHigh-K素材を開発した時のようなブレークスルーは起こると思います。しかし、限界が近づいてきていることも事実です。また、2011年には、トレンドの問題からIntelは最新プロセス技術をモバイル向けCPUであるAtomにまず適用するよう戦略を変更したように、AMDがシングルスレッド性能からマルチスレッド性能を優先するようにFXシリーズ（Zambezi）にて戦略を変更したように単なる高速化を目指さなくなりました。このことから、量子コンピュータのようなまったく新しい構造によるCPU（そもそもCPUという考え方でないかもしれない）が誕生するまでは、クラウドが計算リソースであり続けるでしょう。&lt;br /&gt;
&lt;br /&gt;
さらに、「ブレインインタフェース」の実現により、休閑期の脳を計算リソースとして活用する人間コンピューティングなるネットワークになるかもしれません。現実の世界の問題を夢世界に写像し、その夢を与えられた人間が夢で問題を解決することにより現実問題が解決される、まさにDoll Houseの世界です。ロッサムのような企業は望みませんが。&lt;br /&gt;
&lt;br /&gt;
では、この世界を実現するにあたり、 欠けている技術ピースは何でしょうか。それが、2012年以降のGartnerハイプサイクルに登場するはずです。&lt;br /&gt;
大量のセンサをネットワークに接続するために必要となる「IPv6」対応を早期に実現すること、センサの充電を考慮する必要をなくす太陽電池のような「エコ発電システム」や「長距離Wireless電送」、砂漠などの地帯でもセンサが繋がるように「高速な衛生無線」、生体情報を抽出・管理する「小型ヘルスモニタリング」などが考えられます。また、量子コンピュータによるネットワークになる場合は「P2P」技術も必要になるかもしれません。&lt;br /&gt;
&lt;br /&gt;
余談ですが、ザッカーバーグは過去の時点からここまで考えていたんだろうなと、すごい人だなと思います。広告主獲得のための対策といった側面もあるでしょうが、先の2011年のf8で発表されたtickerによるメディアリアルタイムストリームなどは、コンテキスト収集という面で、この世界を支配するための第一歩なのだろうと思います。</content><link rel='replies' type='application/atom+xml' href='http://ceromondo.blogspot.com/feeds/6469076647081887082/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ceromondo.blogspot.com/2011/10/gartner-hype-cycle_02.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/6469076647081887082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/6469076647081887082'/><link rel='alternate' type='text/html' href='http://ceromondo.blogspot.com/2011/10/gartner-hype-cycle_02.html' title='Gartner Hype Cycleから今後の世界を占ってみる'/><author><name>goemondo</name><uri>http://www.blogger.com/profile/17435609166287599853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBzzt2y_e87Gq_DyMOP7hLXjtzTK0S-UI-KcbukCTAe68exHWX3dwUwrXC1u6f0jRaJzF8-DbBz8Mxokx38sT-4s94c4VvJ2By6g6075v6WksNTNZsddzCT4p-IYM4Sg/s220/profile.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7457791004653031882.post-2236878590140525746</id><published>2011-10-01T23:50:00.135+09:00</published><updated>2011-10-25T22:46:20.236+09:00</updated><title type='text'>Gartner Hype Cycle の年度差異を見る</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;前回に引き続き、複数年のGartner ハイプサイクルを比較したいと思います。このポストでは、各技術の移り変わりに着目してみます。&lt;br /&gt;
&lt;br /&gt;
ハイプサイクルは「期待度」と「成熟度」を軸とした図となるため、そのプロット（技術）はばらばらに配置され、ある技術に着目してその年度をまたがる遷移を調べるのには向いていません。そこで縦軸に技術種別、横軸を成熟度とした図を用意してみます。なお、技術種別順はいい案が出なかったのでサーバ寄り、クライアント寄りの軸としました。が、それにマッチしない技術もあるため、あまり見やすい軸とは言えません。。。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkYjM8BSra77KPOS4hr49oDOipmc7_4HXsVAEVZXKneN4rpIefqOenYMtu3buNcWHJsCl0Rqgg7VwO6zEuDwCPaXGD8XjoBZTop5RWouiQmJtdNM-zEP94rn-VI-XKT3nmFeFoLq_Si9RD/s1600/GartnerHypeCycle2007.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkYjM8BSra77KPOS4hr49oDOipmc7_4HXsVAEVZXKneN4rpIefqOenYMtu3buNcWHJsCl0Rqgg7VwO6zEuDwCPaXGD8XjoBZTop5RWouiQmJtdNM-zEP94rn-VI-XKT3nmFeFoLq_Si9RD/s400/GartnerHypeCycle2007.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;2007年の技術マップ&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr7hbl2OMrdDJ4wT9TSa0tDb1t_j-5-kpIOH20E24c7z-CMyhDRNDwNnCM0eBDtNWq9NWB5OxFQiN8v8OSHr_EuvDeZceo0mKWQfKDDYiywd0m-4gpPV8A7BL5gkkjG7wxOyEpawWbbUow/s1600/GartnerHypeCycle2008.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr7hbl2OMrdDJ4wT9TSa0tDb1t_j-5-kpIOH20E24c7z-CMyhDRNDwNnCM0eBDtNWq9NWB5OxFQiN8v8OSHr_EuvDeZceo0mKWQfKDDYiywd0m-4gpPV8A7BL5gkkjG7wxOyEpawWbbUow/s400/GartnerHypeCycle2008.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;2008年の技術マップ&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcF2Yy7S9gkNyUsLd71HsvXg5f8gdz_2nga5SGm64Z6zuTAJRBG4TSiNuMBXNhvlVdQ_PASXYhOShnKphJQ-AG9Wbj085OTTmubayECVU6xPAytSZr_yhYUcwXubj97vaNcQbqj6vR_ssF/s1600/GartnerHypeCycle2009.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcF2Yy7S9gkNyUsLd71HsvXg5f8gdz_2nga5SGm64Z6zuTAJRBG4TSiNuMBXNhvlVdQ_PASXYhOShnKphJQ-AG9Wbj085OTTmubayECVU6xPAytSZr_yhYUcwXubj97vaNcQbqj6vR_ssF/s400/GartnerHypeCycle2009.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;2009年の技術マップ&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLEqxTNVSHBftSvoAGJJPnUqlEtTlPK-bnBXa39QtacYCOjKt4q17PGKCvjWmor1kefg0StA5htDbekJd0G3mmoZLdtj52ySxI_0bqUI-k4OnVnLjw8wtrI9tkt7TYmtaSMPofrICfyJeo/s1600/GartnerHypeCycle2010.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLEqxTNVSHBftSvoAGJJPnUqlEtTlPK-bnBXa39QtacYCOjKt4q17PGKCvjWmor1kefg0StA5htDbekJd0G3mmoZLdtj52ySxI_0bqUI-k4OnVnLjw8wtrI9tkt7TYmtaSMPofrICfyJeo/s400/GartnerHypeCycle2010.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;2010年の技術マップ&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx6UOD25G_PPB2U6fDu_q9QqW3mN4nogvU5V57AvKXB7RsYTjWj8jje3cfbbj835j9CWe6I2i5O0CjY3gL2xjPkdnw8sKRMJioJDqH0dYi7V8qm__WrlGqUkUEZI5Grr9WtCAgfqv54qAs/s1600/GartnerHypeCycle2011.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx6UOD25G_PPB2U6fDu_q9QqW3mN4nogvU5V57AvKXB7RsYTjWj8jje3cfbbj835j9CWe6I2i5O0CjY3gL2xjPkdnw8sKRMJioJDqH0dYi7V8qm__WrlGqUkUEZI5Grr9WtCAgfqv54qAs/s400/GartnerHypeCycle2011.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;2011年の技術マップ&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;上図からGartnerは大きく次の技術群を柱としてトレンドをまとめていることがわかります。&lt;br /&gt;
&lt;div&gt;&lt;ol&gt;&lt;li&gt;クラウド技術&lt;/li&gt;
&lt;li&gt;多量データ解析技術&lt;/li&gt;
&lt;li&gt;コンテキスト収集・分析・利用技術&lt;/li&gt;
&lt;li&gt;仮想技術（仮想化でなくVirtualワールド技術）&lt;/li&gt;
&lt;li&gt;知覚・認知技術&lt;/li&gt;
&lt;li&gt;ソーシャル技術&lt;/li&gt;
&lt;li&gt;デバイス技術&lt;/li&gt;
&lt;li&gt;先物技術&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;なお、それぞれの技術に着目すると、その移り変わりが異なり面白いです。&lt;br /&gt;
「クラウド」「仮想技術」「認知技術」「ソーシャル」「デバイス」技術はその技術が登場した期からある程度きれいに遷移しています。例えば「クラウド」は、2007年の時点で流行期にある「マッシュアップ」、反動期にある「Web2.0」や「SOA」技術を基盤として、「Web Platform」として黎明期に登場し、2008年に「クラウドコンピューティング」として&quot;生まれかわり&quot;黎明期に登場しています。その後、「クラウド」および「クラウドコンピューティング」は流行期〜反動期へと遷移しますが、そのサブセットである「プライベートクラウドコンピューティング」が2011年には流行期に登場しています。また、「デベロッパマーケット」として2009年に登場した「AppStore」は2010年には反動期に、2011年には技術成熟までの期間が1, 2年と短縮されています。&lt;br /&gt;
これは、クラウドはGoogleやAmazonなどの企業が、デバイスや認知技術はGoogleやAppleが、ソーシャルはFacebookやTwitterなどの企業が主として開発してきた技術であり、&quot;正しい（と思われる）道&quot;から外れることがなかったためと思われます。&lt;br /&gt;
一方、「多量データ解析」技術分類に含めた「SNS解析」は、2007年に反動期に2〜5年後の技術として登場しますが、2008年、この時点では誰もが？想像していなかったFacebookのアプリプラットフォーム化により、さらに高度な解析が求められるようになり、またユーザニーズも上がったことで、2011年には流行期に再登場しています。&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceromondo.blogspot.com/feeds/2236878590140525746/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ceromondo.blogspot.com/2011/10/gartner-hype-cycle.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/2236878590140525746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/2236878590140525746'/><link rel='alternate' type='text/html' href='http://ceromondo.blogspot.com/2011/10/gartner-hype-cycle.html' title='Gartner Hype Cycle の年度差異を見る'/><author><name>goemondo</name><uri>http://www.blogger.com/profile/17435609166287599853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBzzt2y_e87Gq_DyMOP7hLXjtzTK0S-UI-KcbukCTAe68exHWX3dwUwrXC1u6f0jRaJzF8-DbBz8Mxokx38sT-4s94c4VvJ2By6g6075v6WksNTNZsddzCT4p-IYM4Sg/s220/profile.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkYjM8BSra77KPOS4hr49oDOipmc7_4HXsVAEVZXKneN4rpIefqOenYMtu3buNcWHJsCl0Rqgg7VwO6zEuDwCPaXGD8XjoBZTop5RWouiQmJtdNM-zEP94rn-VI-XKT3nmFeFoLq_Si9RD/s72-c/GartnerHypeCycle2007.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7457791004653031882.post-4939670869825095954</id><published>2011-09-30T19:26:00.280+09:00</published><updated>2011-11-16T20:42:02.247+09:00</updated><title type='text'>Gartner Hype Cycle を比較してみる</title><content type='html'>Gartner のハイプサイクル。&lt;br /&gt;
ご存知の通り、新しい技術を「期待度」と「成熟度」の２軸にまとめたグラフです。単に Hot な技術を列挙するだけでなく、その技術に対する市場の反応をたった一つの図で表現している素晴らしいツールです。ご存知でない方は&lt;a href=&quot;http://www.gartner.co.jp/research/methodologies/research_hype.php&quot;&gt;Gartner のハイプサイクルの説明&lt;/a&gt;を参考ください。&lt;br /&gt;
なお、日本における技術トレンドを網羅した情報が欲しい場合は&lt;a href=&quot;http://www.meti.go.jp/policy/economy/gijutsu_kakushin/kenkyu_kaihatu/str-top.html&quot;&gt;経済産業省の技術戦略マップ&lt;/a&gt;が参考になります。&lt;br /&gt;
&lt;br /&gt;
さて本題です。&lt;br /&gt;
過去数年分のハイプサイクルを比較したいと思います。ハイプサイクルはその年のトレンドを読むことに関しては優れていますが、複数年を通して、各技術がどのように遷移しているかを読むことはできません。&lt;br /&gt;
そこで、2012年以降の技術トレンドを予測すること、さらには今後の世界像を予想することを目的に、複数年を通しての技術の遷移を調査してみます。&lt;br /&gt;
このポストでは、まず2006年から2011年のハイプサイクルを眺め、それぞれの特徴を挙げてみます。&lt;br /&gt;
&lt;br /&gt;
まず各年代のハイプサイクル上の技術数を比較します。&lt;br /&gt;
&lt;table class=&quot;bstbl&quot; align=&quot;center&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th&gt;年度&lt;/th&gt;&lt;th&gt;〜2年&lt;/th&gt;&lt;th&gt;2〜5年&lt;/th&gt;&lt;th&gt;5〜10年&lt;/th&gt;&lt;th&gt;10〜年&lt;/th&gt;&lt;th&gt;合計&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2005&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;44&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2006&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;36&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2007&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;29&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2008&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;27&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2009&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;34&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2010&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;40&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2011&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;42&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmfnN9VPvH2Imh8dVa3FBRbvNy_ZOLQ1ATI2YQNaT4GbH_0sErV_iYeErMDToSFPkV0okZ9OazIcyZ9JxfOcTFRAi1fWejHLfIcaKykGWJfORk-qXp4y2dgCNQ6p_peLLMTummmYA7aH0M/s1600/comparingEachHypeCycle.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;246&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmfnN9VPvH2Imh8dVa3FBRbvNy_ZOLQ1ATI2YQNaT4GbH_0sErV_iYeErMDToSFPkV0okZ9OazIcyZ9JxfOcTFRAi1fWejHLfIcaKykGWJfORk-qXp4y2dgCNQ6p_peLLMTummmYA7aH0M/s400/comparingEachHypeCycle.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;各年度の合計数がばらばらなように、対象年度のトレンド技術トップXを選択している訳ではなく、”飛びつくべき技術”を数に関係なく採用しているようです。なお、2005年から2007年はほぼ線形に現象、一方2007年以降はほぼ線形に増加しています。特に、先物（5年先以降）が増加しています。&lt;br /&gt;
これは予想に反していました。2008年あたりに登場するクラウドによって、容易にサービスを提供できる環境が整う結果、スモールスタートなWeb関連技術が多数登場するのではと思っていたためです。が、当然の結果かもしれません。最近のスタートアップは素晴らしいアイデアを既存の技術の組み合わせで実現しているサービスがほとんどであり、技術マップであるハイプサイクルに登場しないのでしょう。&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;続いて、線形増加を始めた2007年から各年の特徴を挙げてみます。なお、2005年、2006年は&lt;a href=&quot;http://fplanque.com/info-tech/it-business/emerging-technologies-hype-cycle-2006&quot;&gt;ここらへん&lt;/a&gt;を参照ください。図はいろいろな箇所から拝借しました。ありがとうございます。&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgYukBAibyT8KJcysiKJ20RWwwUCkHcDRC4hHMfUQ-EZyp44DSDCAwSH1geykCk1EogKaMsUSOy3GY3ek8H1v1wND_m-dxY1cTaiRn0l2uWYs-xME5xz8USPFlWRCwVSen-pZ8mi46iJ-Y/s1600/gartner_hype_cycle_2007.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;295&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgYukBAibyT8KJcysiKJ20RWwwUCkHcDRC4hHMfUQ-EZyp44DSDCAwSH1geykCk1EogKaMsUSOy3GY3ek8H1v1wND_m-dxY1cTaiRn0l2uWYs-xME5xz8USPFlWRCwVSen-pZ8mi46iJ-Y/s400/gartner_hype_cycle_2007.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://www.ericbugnon.com/2007/08/nouvelles-technologies-et-hype-cycle-de-gartner-2007/&quot;&gt;Gartner Hypecycle 2007&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;2007年はWeb2.0やSOAが反動期に入り、それら技術によるWeb Platformが黎明期に入っています。また、Twitterに代表されるマイクロブログが流行期です。&lt;br /&gt;
さらに、集合知に示されるように、センサネットワークなどから収集されるコンテキスト群を分析するコンテキスト分析などが流行期にあります。同様にコンテキストを扱うSemantic Webはこのころには反動期に突入しています。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn-5ZSwoz2SW2MOeTObMnM-uSHXSIOtt9VOegjfelE1XJARhKXBBecwZUmXqojXM0op8cCEvdLcl-OTRO8UbRjNWXmi5_Tcg6XilWYTETUWdJKFzruQLbEi5NnNbMWoNz7VUv7ZcfCJKy6/s1600/Gartner-Hype-Cycle-2008.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;312&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn-5ZSwoz2SW2MOeTObMnM-uSHXSIOtt9VOegjfelE1XJARhKXBBecwZUmXqojXM0op8cCEvdLcl-OTRO8UbRjNWXmi5_Tcg6XilWYTETUWdJKFzruQLbEi5NnNbMWoNz7VUv7ZcfCJKy6/s400/Gartner-Hype-Cycle-2008.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://www.virtualtravelog.net/2011/04/googles-ngram-viewer-exposes-gartners-hype-cycles/&quot;&gt;Gartner Hypecycle 2008&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;2008年はクラウドが登場しました（黎明期）。また、クラウドによる「所有から利用へ」のトレンドを受けグリーンITが流行期です。さらに、アプリプラットフォームの登場により、Facebookが単なるソーシャルネットワークからプラットフォームへと変貌し始めた時期であり、Social Platformが流行期にあります。SNS関連では、マイクロブログなどの流行を受けた企業内ブログ技術が反動期にあります。&lt;br /&gt;
&lt;div&gt;コンテキスト系技術としてはコンテキストデリバリーアーキテクチャが黎明期として登場しています。&lt;/div&gt;&lt;div&gt;また、電子ペーパやタブレットPC、サーフェースComputingに代表されるタッチデバイスの登場もこの年です。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYMSQ7IzFH2e1pp17cKmAX41W_duXMLdjhGbps8-i_ruKcRmn1FKi-r72Qb79435Fg2BZs15rWhyphenhyphentaHMCvElEUh90NZJSyR0E2r2tuJ2GUxyXkzcbj_jg099yHz7DGiQZcyf4Lmr6yja23/s1600/gartner_hype_cycle2009.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;325&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYMSQ7IzFH2e1pp17cKmAX41W_duXMLdjhGbps8-i_ruKcRmn1FKi-r72Qb79435Fg2BZs15rWhyphenhyphentaHMCvElEUh90NZJSyR0E2r2tuJ2GUxyXkzcbj_jg099yHz7DGiQZcyf4Lmr6yja23/s400/gartner_hype_cycle2009.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://stephenslighthouse.com/2010/10/18/gartners-2009-and-2010-hype-cycles/&quot;&gt;Gartner Hypecycle 2009&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;2009年は2008年と同様の技術が並びますが、iPhoneを使ったセカイカメラなどの流行によりARが黎明期に登場しています。また、デベロッパにとってありがたいマーケットプレイスが反動期として登場しています。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5ahCXl_fXU_qgIicVk-MVenccONmP3onCvna3vn1zY2l2vJWw4E9aPEYc802NSrCdBtStc1AnHuSQCFK5P-qUQRWvYicEL86E4k9-SQLwKr0MnmicBdSMzYYBOqDt_2roJN57o15xq_2J/s1600/gartner_hypecycle_2010.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5ahCXl_fXU_qgIicVk-MVenccONmP3onCvna3vn1zY2l2vJWw4E9aPEYc802NSrCdBtStc1AnHuSQCFK5P-qUQRWvYicEL86E4k9-SQLwKr0MnmicBdSMzYYBOqDt_2roJN57o15xq_2J/s400/gartner_hypecycle_2010.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://www.gartner.com/it/page.jsp?id=1447613&quot;&gt;Gartner Hypecycle 2010&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;2010年、プライベートクラウドが流行期に登場しました。また、Googleによる自動運転自動車や、ブレインインタフェースのような先物技術も登場しています。さらにはGoogleのおかげでしょうか、会話翻訳や音声認識などの、認識技術が黎明期から回復期まで並んでいます。&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr6d-MfB7HAPTdqPGYrt_7wtzqAjVybiIMH_BF9M4zgwJ9xfeSpbeZTzdlSezupfD51aqwLgyU7WPDGm1yyuN9qvKwtpHq79PN88QKO05KmetRnHKuUgfuBUeNupj4yXMfyDiYJ2VuNqU-/s1600/gartner_hypecycle_2011.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr6d-MfB7HAPTdqPGYrt_7wtzqAjVybiIMH_BF9M4zgwJ9xfeSpbeZTzdlSezupfD51aqwLgyU7WPDGm1yyuN9qvKwtpHq79PN88QKO05KmetRnHKuUgfuBUeNupj4yXMfyDiYJ2VuNqU-/s400/gartner_hypecycle_2011.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 13px; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.gartner.com/it/page.jsp?id=1763814&quot;&gt;Gartner Hypecycle 2011&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: left;&quot;&gt;2011年、現在はやりのBig Data、ソーシャルBuying（グループBuying）、モノのネットワークの連携技術であるInternet Of Thingsが並んでいます。&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceromondo.blogspot.com/feeds/4939670869825095954/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ceromondo.blogspot.com/2011/09/gartner-hype-cycle.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/4939670869825095954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7457791004653031882/posts/default/4939670869825095954'/><link rel='alternate' type='text/html' href='http://ceromondo.blogspot.com/2011/09/gartner-hype-cycle.html' title='Gartner Hype Cycle を比較してみる'/><author><name>goemondo</name><uri>http://www.blogger.com/profile/17435609166287599853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBzzt2y_e87Gq_DyMOP7hLXjtzTK0S-UI-KcbukCTAe68exHWX3dwUwrXC1u6f0jRaJzF8-DbBz8Mxokx38sT-4s94c4VvJ2By6g6075v6WksNTNZsddzCT4p-IYM4Sg/s220/profile.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmfnN9VPvH2Imh8dVa3FBRbvNy_ZOLQ1ATI2YQNaT4GbH_0sErV_iYeErMDToSFPkV0okZ9OazIcyZ9JxfOcTFRAi1fWejHLfIcaKykGWJfORk-qXp4y2dgCNQ6p_peLLMTummmYA7aH0M/s72-c/comparingEachHypeCycle.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>