基本情報技術者試験
じけいれつでーた
時系列データ
Time Series Data
時系列データは、ある量を時間の経過に沿って観測し、観測した時刻の順に並べたデータです。1日ごとの株価やセンサーの計測値のように、個々の値だけでなく値が現れた順番も情報の一部です。深層学習では、添字を系列の中の位置まで広げて文章の単語の並びなども同じ形の系列として扱い、RNNなどの系列を処理するモデルに入力します。
詳しい説明
時系列データとは何か
時系列データは、ある量を時間の経過に沿って観測し、観測した順に並べたデータです。1日ごとの株価、1時間ごとの気温、機械に取り付けたセンサーが一定の間隔で記録する値、店舗の日ごとの売上などが例です。どの例でも、1つ1つの値には「いつの値か」という時刻が結び付いていて、値はその時刻の順に並んでいます。
このページは、時系列データを深層学習の入力として扱う立場から説明します。統計学には、時系列を確率的に変動する量の並びとして数学的に定義して分析する時系列解析という分野がありますが、このページはその厳密な定義には立ち入りません。
並び順に情報があるということ
時系列データの性質は、順序を持たないデータと比べると分かりやすくなります。例えば、顧客100人の年齢と購入金額を1人1行で並べた表は、行の順番を入れ替えても、表が表す内容は変わりません。どの行が先に来るかに意味が無いからです。
一方、ある店の7日分の売上を日付の順に並べたデータで、値の順番を入れ替えると、売上が増えているのか減っているのかという情報が失われます。時系列データでは、個々の値だけでなく、値がどの順番で現れたかも情報の一部です。前の時刻の値が後の時刻の値の手がかりになるのも、この順序があるからです。
深層学習での書き表し方
イアン・グッドフェロー(Ian Goodfellow)、ヨシュア・ベンジオ(Yoshua Bengio)、アーロン・クールヴィル(Aaron Courville)による教科書『Deep Learning』(2016年)の第10章は、リカレントニューラルネットワーク(RNN)について、系列データ(sequential data)を処理するためのニューラルネットワークの一群だと紹介しています。同章では、RNNが処理する入力は値の並び と書かれます。 は 番目の値で、添字 は1から まで動きます。(タウ)は系列の長さです。同章は各 をベクトル、つまり複数の数を並べたものとして扱っています。
この書き方は、畳み込みニューラルネットワーク(CNN)との対比で導入されています。CNNが画像のように格子状に並んだ値を処理するのに特化したネットワークであるのと同じように、RNNは値の並びを処理するのに特化したネットワークだ、という位置づけです。
この書き方は、RNNの説明を進めるための実用上の表し方です。値の並びがどのような確率的な仕組みから生まれたのかといった、統計学の意味での定義を与えるものではありません。
添字は時刻でなく位置でもよい
『Deep Learning』第10章は、添字 は必ずしも現実の時間の経過を指さなくてよく、系列の中での位置だけを指す場合もあると断っています。
このため深層学習では、時刻を持たない並びも、時系列データと同じ形の入力として扱えます。代表的な例が文章です。文章を単語に区切ると、1番目の単語、2番目の単語という位置の順に並んだ系列になります。単語の順番を入れ替えると文の意味が変わったり、文として成り立たなくなったりする点も、時系列データと共通しています。
| データ | 1つの要素 | 添字が表すもの |
|---|---|---|
| 日ごとの株価 | ある1日の株価 | 日付という時刻 |
| センサーの計測値 | 1回の計測で得た値(センサーが複数あればベクトル) | 計測した時刻 |
| 音声の波形 | ある瞬間の振幅 | 記録した時刻 |
| 文章 | 1つの単語 | 文の中での位置 |
長さの違いと、情報が現れる位置の違い
時系列データを機械学習で扱うときには、行と列の数が決まった表とは違う難しさが2つあります。
1つ目は、系列の長さがデータごとに違うことです。文章の単語数は文ごとに違い、センサーの記録も計測した期間によって長さが変わります。『Deep Learning』第10章は、ほとんどのRNNが長さの異なる系列を処理できると述べています。また実際の学習では、長さ が互いに異なる複数の系列をまとめて、ミニバッチ(学習で一度にまとめて処理するデータの組)として扱うとも書いています。
2つ目は、同じ情報が系列の違う位置に現れることです。同章は次の2つの英文を例に挙げています。
- I went to Nepal in 2009(私は2009年にネパールへ行った)
- In 2009, I went to Nepal(2009年に私はネパールへ行った)
どちらの文から「語り手がネパールへ行った年」を取り出す場合も、答えは2009です。ただし2009が現れる位置は、1つ目の文では6番目の単語、2つ目の文では2番目の単語です。
同章によれば、決まった長さの文を処理する全結合の順伝播型ネットワーク(入力から出力へ一方向に計算が進むネットワーク)は、入力の位置ごとに別々のパラメータを持ちます。そのため言語の規則は、文の中の位置ごとに別々に学習しなければなりません。これに対してRNNは、いくつもの時刻にわたって同じ重みを使います。1つのパラメータを複数の箇所で使うこの考え方をパラメータ共有と呼びます。同章は、時刻ごとに別のパラメータを持つと、訓練で見なかった長さの系列に対応できず、長さや位置の違う系列の間で学んだことを共有できないと説明しています。
時間の方向に重みを共有する2つのやり方
『Deep Learning』第10章は、時間の方向にパラメータを共有するやり方として、RNNのほかに、1次元の系列に沿って畳み込みを行う方法を挙げています。この方法は時間遅れニューラルネットワーク(time-delay neural network)の基礎になった考え方で、同じ畳み込みの重みを各時刻に当てます。出力の各要素は、入力のうち近くにある少数の要素だけから計算されます。同章の評価では、このやり方は時間の方向にパラメータを共有できるものの浅い、とされています。
RNNでは、出力の各要素が、それより前の出力に同じ更新の規則を当てて計算されます。前の時刻までの計算結果が次の時刻の計算に引き継がれるので、系列の前のほうにある情報も後の計算に影響できます。RNNの仕組みの詳細は、リカレントニューラルネットワークのページで説明します。
未来の値を使ってよいかを意識する
時系列データでは、ある時刻の時点でどこまでの値が手に入っているかが問題になります。明日の売上を予測したいとき、予測する時点で手元にあるのは今日までの値だけです。
『Deep Learning』第10章は、時間を含むデータにRNNを当てる場合でも、系列全体を観測し終えてからネットワークに入力するのであれば、時間を逆向きにたどる結合を持たせてよいと述べています。裏を返すと、系列を観測しながら順に処理する場面では、まだ観測していない後の時刻の値は使えません。
同じ注意は、モデルの学習と評価のためにデータを分けるときにも当てはまります。ここから先は『Deep Learning』第10章の記述ではなく、機械学習で一般に知られている注意です。順序を持たないデータでは、行を無作為に選んで学習用と評価用に分けることがよくあります。時系列データを同じように無作為に分けると、評価用に回した時刻より後の値が学習用に入ります。すると、実際の予測では手に入らないはずの未来の情報でモデルを学習させることになり、評価の成績が実際に予測したときより良く見えてしまいます。これを避けるには、ある時点より前を学習用、後を評価用にするように、時刻の順を保って分けます。
試験で問われること
基本情報技術者試験
- 時系列分析におけるトレンド、季節変動、不規則変動の分解手法を理解する。
- 移動平均を用いた平滑化や、回帰分析を用いた予測モデルの構築手法を把握する。
- システムの運用監視において、時系列データを用いた閾値による異常検知の仕組みを理解する。
最終更新日: 2026/09/23