(57)【要約】【課題】多種多様の入力データ及び出力値を扱うことができるモデルを、計算コストをかけずに生成するための技術を実現する。【解決手段】データ種別が異なる複数の時系列データに基づいて出力値を出力するためのモデルを生成する計算機であって、モデルは、再帰的構造の複数のノードの接続から構成され、所定のタイムステップにしたがって複数のノードの状態を更新するネットワークと、ネットワークから出力される複数の値の各々に重みを乗算した値を加算することによって出力値を算出する加算部とから構成され、計算機は、データ種別が異なる複数の時系列データ及び教師データから構成される学習データを用いて、複数の出力値の各々について、複数の重みを決定する学習処理を実行する学習部と、出力値の種別と、複数の重みとを対応付けた学習結果を格納する記憶部と、を備える。【選択図】  図４
2020177509.tif 000002
【特許請求の範囲】
【請求項１】
演算装置及び前記演算装置に接続される記憶装置を備え、データ種別が異なる複数の時系列データに基づいて出力値を出力するためのモデルを生成する計算機であって、
前記モデルは、再帰的構造の複数のノードの接続から構成され、所定のタイムステップにしたがって前記複数のノードの状態を更新するネットワークと、前記ネットワークから出力される複数の値の各々に重みを乗算した値を加算することによって前記出力値を算出する加算部とから構成され、
前記計算機は、
データ種別が異なる複数の時系列データ及び教師データから構成される学習データを用いて、複数の前記出力値の各々について、前記複数の重みを決定する学習処理を実行する学習部と、
前記出力値の種別と、前記複数の重みとを対応付けた学習結果を格納する第１の記憶部と、を備えることを特徴とする計算機。
【請求項２】
請求項１に記載の計算機であって、
前記複数の重みを格納する第２の記憶部と、前記複数の時系列データから前記モデルに入力する時系列データをサンプリングするためのサンプリング間隔を格納する第３の記憶部とを備え、
前記学習部は、
前記第３の記憶部に格納される前記サンプリング間隔に基づいて、前記学習データに含まれる前記複数の時系列データをサンプリングすることによって複数の学習用時系列データを生成し、前記複数の学習用時系列データを前記モデルに入力する入力データ処理部と、
前記モデルから出力された前記出力値と、前記教師データとを比較し、前記比較の結果に基づいて、前記複数の重み及び前記サンプリング間隔を更新する比較器と、を含み、
前記出力値の種別、前記第２の記憶部に格納される前記複数の重み、及び前記第３の記憶部に格納される前記サンプリング間隔を対応付けた前記学習結果を前記第１の記憶部に格納することを特徴とする計算機。
【請求項３】
請求項２に記載の計算機であって、
前記モデルは、前記サンプリング間隔だけ遅延を発生させるように、前記複数の時系列データを前記ネットワークに入力する制御を含むことを特徴とする計算機。
【請求項４】
請求項２に記載の計算機であって、
前記学習データを蓄積する第４の記憶部を備え、
前記入力データ処理部は、前記タイムステップと同期するように、前記第４の記憶部から、前記学習データに含まれる前記複数の時系列データをサンプリングすることによって前記複数の学習用時系列データを生成することを特徴とする計算機。
【請求項５】
請求項２に記載の計算機であって、
前記モデルは、前記加算部を複数含み、
前記学習部は、前記複数の加算部の各々とペアを構成するように、複数の前記比較器を含み、
前記計算機は、前記複数の比較器の各々とペアを構成するように、複数の前記第３の記憶部を備え、
前記学習部は、前記加算部、前記比較器、及び前記第３の記憶部の組を用いて、前記複数の出力値に関する前記学習処理を並列に実行することを特徴とすることを特徴とする計算機。
【請求項６】
請求項１に記載の計算機であって、
前記ネットワークは、Ｅｃｈｏ  Ｓｔａｔｅ  Ｎｅｔｗｏｒｋであることを特徴とする計算機。
【請求項７】
請求項１に記載の計算機であって、
前記第１の記憶部から前記学習結果を取得して前記モデルを構築し、解析用時系列データを前記モデルに入力することによって前記学習結果に対応する前記出力値を出力する予測部を備えることを特徴とする計算機。
【請求項８】
計算機が実行する、データ種別が異なる複数の時系列データに基づいて出力値を出力するためのモデルを生成するためのデータ処理方法であって、
前記計算機は、演算装置及び前記演算装置に接続される記憶装置を有し、
前記モデルは、再帰的構造の複数のノードの接続から構成され、所定のタイムステップにしたがって前記複数のノードの状態を更新するネットワークと、前記ネットワークから出力される複数の値の各々に重みを乗算した値を加算することによって前記出力値を算出する加算部とから構成され、
前記データ処理方法は、
前記演算装置が、データ種別が異なる複数の時系列データ及び教師データから構成される学習データを用いて、複数の前記出力値の各々について、前記複数の重みを決定する学習処理を実行する第１のステップと、
前記演算装置が、前記出力値の種別と、前記複数の重みとを対応付けた学習結果を前記記憶装置に格納する第２のステップと、を含むことを特徴とするデータ処理方法。
【請求項９】
請求項８に記載のデータ処理方法であって、
前記計算機は、前記複数の重みを格納する第１の記憶部と、前記複数の時系列データから前記モデルに入力する時系列データをサンプリングするためのサンプリング間隔を格納する第２の記憶部とを有し、
前記第１のステップは、
前記演算装置が、前記第２の記憶部に格納される前記サンプリング間隔に基づいて、前記学習データに含まれる前記複数の時系列データをサンプリングすることによって複数の学習用時系列データを生成する第３のステップと、
前記演算装置が、前記複数の学習用時系列データを前記モデルに入力する第４のステップと、
前記演算装置が、前記モデルから出力された前記出力値と、前記教師データとを比較する第５のステップと、
前記演算装置が、前記比較の結果に基づいて、前記複数の重み及び前記サンプリング間隔を更新する第６のステップと、
前記演算装置が、前記更新された複数の重みを前記第１の記憶部に格納し、前記更新されたサンプリング間隔を前記第２の記憶部に格納する第７のステップと、を含み、
前記第２のステップは、前記演算装置が、前記出力値の種別、前記第１の記憶部に格納される前記複数の重み、及び前記第２の記憶部に格納される前記サンプリング間隔を対応付けた前記学習結果を前記記憶装置に格納するステップを含むことを特徴とするデータ処理方法。
【請求項１０】
請求項９に記載のデータ処理方法であって、
前記モデルは、前記サンプリング間隔だけ遅延を発生させるように、前記複数の時系列データを前記ネットワークに入力する制御を含むことを特徴とするデータ処理方法。
【請求項１１】
請求項９に記載のデータ処理方法であって、
前記計算機は、前記学習データを蓄積する第３の記憶部を有し、
前記第３のステップは、前記演算装置が、前記タイムステップと同期するように、前記第３の記憶部から、前記学習データに含まれる前記複数の時系列データをサンプリングすることによって前記複数の学習用時系列データを生成するステップを含むことを特徴とするデータ処理方法。
【請求項１２】
請求項９に記載のデータ処理方法であって、
前記第１のステップは、前記演算装置が、前記複数の出力値に関する前記学習処理を並列に実行するステップを含むことを特徴とすることを特徴とするデータ処理方法。
【請求項１３】
請求項８に記載のデータ処理方法であって、
前記ネットワークは、Ｅｃｈｏ  Ｓｔａｔｅ  Ｎｅｔｗｏｒｋであることを特徴とするデータ処理方法。
【請求項１４】
請求項８に記載のデータ処理方法であって、
前記演算装置が、前記記憶装置に格納される前記学習結果を取得して前記モデルを構築するステップと、
前記演算装置が、解析用時系列データを前記モデルに入力することによって前記学習結果に対応する前記出力値を出力するステップと、を含むことを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習に関する。
【背景技術】
【０００２】
近年、分野横断型の情報処理基盤の必要性が高まっている。例えば、都市計画の分野では、ＩＣＴ（Ｉｎｆｏｒｍａｔｉｏｎ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ）技術を活用することによって、行政サービスの充実及び地域の高付加価値化に貢献し、ステークホルダーの合意形成をサポートする、データ駆動型の都市計画手法の構築及び普及が注目されている。
【０００３】
従来の都市計画は、行政主導の経験及び感覚又は任意の手法に基づいたものが多かった。そのため、住民が受け入れにくい事例、効果が明確でない事例、有効であっても、経験又は計画者の能力等に依存し、第三者に継承できない事例が殆どである。
【０００４】
都市計画には、経済活動を示すデータ、交通流、不動産に関するデータ、水利データ、及びアンケート等で取得するような定性的なデータ等、多種多様なデータが必要となる。
【０００５】
また、前述のようなデータを活用して得られる情報に関しても、街の状態及び施策の効果を示す指標（例えば、地方の税収額、観光地の収入額、建物及びイベントの動員数、交通流自体又は交通流の渋滞状況、並びに、物流等）も多岐に亘る。特に、施策の効果を示す指標を得るためには、時間の影響も重要な因子である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２００２／０３１７６４号
【非特許文献】
【０００７】
【非特許文献１】Jaeger H. and Haas H., Harnessing nonlinearity: Predicting chaotic systems and saving energy in wireless communication. Science, 304,pp.78-80, 2004.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
データ駆動型の都市計画では、現状の都市の状態、及び、政策又は施策に対する効果等を的確に把握することが重要な課題である。この課題を解決するためには、ＫＰＩ（Ｋｅｙ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｉｎｄｉｃａｔｏｒ）等の評価指標となる出力値群を選定し、出力値に寄与するデータの特定し、データ間又は出力値とデータ間の関係を解析する必要がある。なお、出力値は、他の出力値を算出するためのデータとして用いられる場合もある。以下の説明では、出力値を算出するために用いられる、出力値を含むデータを入力データと記載する。
【０００９】
複数のＫＰＩの各々は、複数種類の入力データと、時間的又は空間的に相関を持ちながら変化する。
【００１０】
近年、入力データと出力値との相関関係を演繹的にブラックボックス（モデル）として生成する機械学習の手法が注目されている。
【００１１】
例えば、ニューラルネットワークをモデルとして生成する手法では、入力データ及び出力値の組から構成される教師データを用いて、ノード間の重みを調整する学習が行われる。学習後のニューラルネットワークに対して、新たな入力データを入力することによって、目的の出力値を得ることができる。
【００１２】
機械学習の手法を用いようとする場合、適切な教師データを予め用意する必要がある。しかし、データ駆動型の都市計画では、予め、適切な教師データを用意することは期待できない。
【００１３】
例えば、街の活性度を可視化する場合、どのようなＫＰＩを選び、どのような入力データを準備すれば有用なモデルを構築できるかを予め設定することは不可能である。一般的に、街の状態を知るためのＫＰＩ群には絶対的な基準がない。また、都市計画に用いるデータは、データ種別及び数が非常に多く、データ同士及びデータ及びＫＰＩが複雑な相関関係となっている場合が多い。
【００１４】
したがって、従来の機械学習の手法では、モデルを生成に要する計算コスト（計算時間及び消費電力）が非常に高くなる。また、生成されるモデルは複雑なものとなるため、モデルの流用及び更新等が困難である。
【００１５】
本発明は、データ駆動型の都市計画等の多種多様の入力データ及び出力値を扱うことができるモデルを、計算コストをかけずに生成するための技術を実現する。
【課題を解決するための手段】
【００１６】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、演算装置及び前記演算装置に接続される記憶装置を備え、データ種別が異なる複数の時系列データに基づいて出力値を出力するためのモデルを生成する計算機であって、前記モデルは、再帰的構造の複数のノードの接続から構成され、所定のタイムステップにしたがって前記複数のノードの状態を更新するネットワークと、前記ネットワークから出力される複数の値の各々に重みを乗算した値を加算することによって前記出力値を算出する加算部とから構成され、前記計算機は、データ種別が異なる複数の時系列データ及び教師データから構成される学習データを用いて、複数の前記出力値の各々について、前記複数の重みを決定する学習処理を実行する学習部と、前記出力値の種別と、前記複数の重みとを対応付けた学習結果を格納する第１の記憶部と、を備える。
【発明の効果】
【００１７】
本発明の一形態によれば、多種多様の入力データ及び出力値を扱うことができるモデルを、計算コストをかけずに生成できる。上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１８】
【図１】実施例１の計算機の構成を説明する図である。
【図２】実施例１の学習データ管理情報のデータ構造の一例を示す図である。
【図３】実施例１の学習結果管理情報のデータ構造の一例を示す図である。
【図４】実施例１の学習部の機能ブロックの一例を示す図である。
【図５】実施例１のリザーバの構造の一例を示す図である。
【図６】実施例１の学習部が実行する学習処理を説明するフローチャートである。
【図７】実施例１の学習処理の具体的なデータ処理の一例を示す図である。
【図８】実施例１の学習処理と従来の学習処理との違いを示すグラフである。
【図９】実施例１の予測部の機能ブロックの一例を示す図である。
【図１０】実施例１の予測部が実行する予測処理を説明するフローチャートである。
【図１１】実施例２の学習結果管理情報のデータ構造の一例を示す図である。
【図１２】実施例２の学習部の機能ブロックの一例を示す図である。
【図１３】実施例２の学習部が実行する学習処理を説明するフローチャートである。
【図１４】実施例２の学習処理の具体的なデータ処理の一例を示す図である。
【図１５】実施例２の予測部の機能ブロックの一例を示す図である。
【図１６】実施例２の予測部が実行する予測処理を説明するフローチャートである。
【図１７】実施例３の学習部の機能ブロックの一例を示す図である。
【図１８】実施例３の学習部が実行する学習処理を説明するフローチャートである。
【図１９】実施例３の予測部の機能ブロックの一例を示す図である。
【図２０】実施例３の予測部が実行する予測処理を説明するフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施例の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【００２０】
以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。
【００２１】
本明細書等における「第１」、「第２」、「第３」等の表記は、構成要素を識別するために付するものであり、必ずしも、数又は順序を限定するものではない。
【００２２】
図面等において示す各構成の位置、大きさ、形状、及び範囲等は、発明の理解を容易にするため、実際の位置、大きさ、形状、及び範囲等を表していない場合がある。したがって、本発明では、図面等に開示された位置、大きさ、形状、及び範囲等に限定されない。
【００２３】
まず、本発明の概要について説明する。
【００２４】
従来技術では、出力値毎にニューラルネットワーク等のモデルを用意する必要があるたった。そのため、複数の出力値を求めるような都市計画では、全てのモデルの生成に膨大な計算コストを要する。また、複数のモデルのパラメータを格納する場合、パラメータの数が多いと、大きな容量の記憶容量が必要となりコストが増大する。
【００２５】
また、従来技術では、新たな出力値を求めるモデルを用意する場合にも膨大な計算コストを要する。
【００２６】
そこで、本発明は、ＥＳＮ（Ｅｃｈｏ  Ｓｔａｔｅ  Ｎｅｔｗｏｒｋ）を用いた機械学習を実行することによって、各出力値を算出するためのモデルを生成し、モデルの定義情報を学習結果として格納する。
【００２７】
ＥＳＮは、層構造がないネットワーク（リザーバ）と、線形加算部とから構成され、時系列データを入力として受け付けるモデルである（例えば、特許文献１及び非特許文献１を参照）。ＥＳＮのネットワーク内のノード間の重みは固定されており、ネットワークと線形加算部との間の重みが学習対象となる。したがって、ＥＳＮを採用することによって、一般的なニューラルネットワークより、モデルの生成に要する計算コストを削減できるという効果がある。
【００２８】
また、ＥＳＮに入力する時系列データのサンプリング間隔は、入力する時系列データと出力値との関係から決まる値であり、モデルの出力値の精度に寄与する重要なパラメータである。
【００２９】
本発明は、出力値の算出に用いる時系列データ毎にサンプリング間隔も学習し、学習結果として格納する。
【実施例１】
【００３０】
図１は、実施例１の計算機１００の構成を説明する図である。
【００３１】
計算機１００は、種類が異なる入力データを処理することによって出力値（ＫＰＩ）を出力するモデルを生成し、また、モデルを用いた複数種類の出力値を出力する。
【００３２】
実施例１では、時系列の入力データ（時系列データ）がデータセットとして入力され、任意の出力値を出力するモデルを対象とする。時系列データとしては、時々刻々と取得されるセンシングデータ及び時系列順に手動で入力された定量データ等が含まれる。
【００３３】
計算機１００は、演算装置１０１、主記憶装置１０２、副記憶装置１０３、ネットワークインタフェース１０４、入力装置１０５、及び出力装置１０６を有する。各ハードウェアは内部バスを介して接続される。
【００３４】
演算装置１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、及びＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等であり、主記憶装置１０２に格納されるプログラムを実行する。演算装置１０１がプログラムにしたがって、処理を実行することによって、特定の機能を実現する機能部（モジュール）として動作する。以下の説明では、機能部を主語に処理を説明する場合、演算装置１０１が機能部を実現するプログラムを実行していることを示す。
【００３５】
主記憶装置１０２は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等であり、演算装置１０１が実行するプログラム及び各種情報を格納する。また、主記憶装置１０２は、プログラムが一時的に使用するワークエリアを含む。
【００３６】
実施例１の主記憶装置１０２には、モデルを生成する学習部１１０及びモデルを用いて出力値を出力する予測部１１１を実現するプログラムが格納される。
【００３７】
なお、実施例１のモデルは時系列データを扱うモデルである。なお、学習部１１０及び予測部１１１は、別々の計算機に実装されてもよい。すなわち、学習を行う計算機１００と、予測を行う計算機１００とから構成される計算機システムでもよい。
【００３８】
なお、主記憶装置１０２に格納されるプログラム及び情報は副記憶装置１０３に格納されていてもよい。この場合、演算装置１０１が副記憶装置１０３からプログラム及び情報を読み出し、主記憶装置１０２にロードする。
【００３９】
副記憶装置１０３は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等であり、データを永続的に格納する。
【００４０】
実施例１の副記憶装置１０３には、学習データを管理するための学習データ管理情報１２０及び学習結果を管理するための学習結果管理情報１２１を格納する。なお、学習データ管理情報１２０のデータ構造の詳細は図２を用いて説明し、学習結果管理情報１２１のデータ構造の詳細は図３を用いて説明する。
【００４１】
ネットワークインタフェース１０４は、ネットワークを介して他の装置と通信するためのインタフェースである。入力装置１０５は、計算機１００にデータ及びコマンド等を入力するための装置であり、キーボード、マウス、及びタッチパネル等を含む。出力装置１０６は、計算機１００からデータ及び処理結果等を出力するための装置であり、ディスプレイ及びプリンタ等を含む。また、出力装置１０６は、仮想現実及び拡張現実等に用いられるデバイスを含んでもよい。
【００４２】
なお、計算機１００は、図示しないＩＯインタフェースを介して、入力装置１０５及び出力装置１０６と接続してもよい。なお、計算機１００は、ネットワークインタフェース１０４等を介して接続される外部端末又は外部サーバに、データ及び処理結果を出力してもよい。
【００４３】
計算機１００は、データソース１５０から学習又はシミュレーションに使用するデータを取得する。データソース１５０から取得されるデータには、気温及び騒音等の環境に関するセンサデータ、学校の位置情報及び人口統計等の業務データ、個人の移動ルート等のパーソナルデータ、ＰＯＳ等の商用データ等が含まれる。なお、本発明は、計算機１００が扱うデータの種類及び数に限定されない。
【００４４】
計算機１００は、入力インタフェース１６０を介してデータソース１５０からデータを取得する。例えば、センサ、外部サーバ、個人端末、及び商用端末等が入力インタフェース１６０として機能する。
【００４５】
なお、データソース１５０のデータは、図示しない、データセンタに蓄積してもよい。この場合、データセンタが入力インタフェース１６０として機能する。データセンタは、データソース１５０のデータを蓄積する場合、信号振幅の調整等のデータの補正、及び定量データへの変換等のデータ変換等の前処理を実行してもよい。
【００４６】
図２は、実施例１の学習データ管理情報１２０のデータ構造の一例を示す図である。
【００４７】
学習データ管理情報１２０は、学習データＩＤ２０１、出力値種別２０２、入力データ２０３、及び教師データ２０４から構成されるエントリを含む。一つの学習データに対して一つのエントリが存在する。
【００４８】
学習データＩＤ２０１は、学習データの識別情報を格納するフィールドである。
【００４９】
出力値種別２０２は、出力値の種別を示す情報を格納するフィールドである。
【００５０】
入力データ２０３は、学習部１１０に入力するデータセットを格納するフィールドである。入力データ２０３には、少なくとも一つのデータセットが格納される。
【００５１】
なお、入力データ２０３には、種類が異なるデータセットが複数格納されてよい。なお、入力データ２０３には、データそのものではなく、入力データの種別、時系列データとして扱う時間の幅等が格納されてもよい。この場合、入力データ２０３に基づいて、データソース１５０又はデータセンタからデータセットが取得される。
【００５２】
教師データ２０４は、教師データを格納するフィールドである。実施例１では、任意のＫＰＩの値が教師データとして格納される。
【００５３】
なお、図２に示す学習データ管理情報１２０のデータ構造は一例であってこれに限定されない。例えば、ＣＳＶ形式等のデータ構造でもよい。
【００５４】
図３は、実施例１の学習結果管理情報１２１のデータ構造の一例を示す図である。
【００５５】
学習結果管理情報１２１は、出力値種別３０１及びパラメータ３０２から構成されるエントリを含む。一つの出力値に対して一つのエントリが存在する。
【００５６】
出力値種別３０１は、出力値の種別に関する情報を格納するフィールドである。出力値種別３０１には、例えば、出力値の名称等が格納される。
【００５７】
パラメータ３０２は、出力値種別３０１に対応する出力値を算出する場合に用いるパラメータを格納するフィールド群である。パラメータ３０２は、タイムスケール３０３及び重み３０４を含む。
【００５８】
タイムスケール３０３は、サンプリング間隔を調整するためのパラメータであるタイムスケールを格納するフィールドである。タイムスケールの詳細は後述する。重み３０４は、モデルを定義する重みを格納するフィールドである。
【００５９】
なお、図３に示す学習結果管理情報１２１のデータ構造は一例であってこれに限定されない。例えば、ＣＳＶ形式等のデータ構造でもよい。
【００６０】
まず、学習部１１０の構成及び処理の詳細について説明する。
【００６１】
図４は、実施例１の学習部１１０の機能ブロックの一例を示す図である。
【００６２】
学習部１１０は、入力データ処理部４００、ＥＳＮ４０１、比較器４０２、タイムスケールレジスタ４０３、及び重みレジスタ４０４を含む。
【００６３】
タイムスケールレジスタ４０３は、タイムスケールを格納するレジスタである。タイムスケールレジスタ４０３は、主記憶装置１０２又は副記憶装置１０３の記憶領域の一部を用いて実現してもよいし、専用のハードウェアを用いて実現してもよい。
【００６４】
データセットのサンプリング間隔は、出力値と入力データとの間の時間相関の違いよって、調整する必要がある。そこで、実施例１では、サンプリング間隔を調整するためにタイムスケールレジスタ４０３が設けてられいる。
【００６５】
重みレジスタ４０４は、ＥＳＮ４０１における学習対象の重みを格納するレジスタである。重みレジスタ４０４は、主記憶装置１０２又は副記憶装置１０３の記憶領域の一部を用いて実現してもよいし、専用のハードウェアを用いて実現してもよい。
【００６６】
入力データ処理部４００は、入力データ４２０に対して所定の処理を実行し、処理が実行された入力データ４２０をＥＳＮ４０１に入力する。例えば、入力データ処理部４００は以下のような処理を実行する。
【００６７】
（処理Ａ１）入力データ４２０は、一般的に、データの振幅等がそろっていない。また、入力データ４２０は、アンケート結果等、定量化されていない値を含むデータも含まれる。そこで、入力データ処理部４００は、データ補正、信号振幅の調整、及び定量化等のデータ変換を行う。
【００６８】
（処理Ａ２）また、一般的に、時系列データを構成する入力データ４２０に含まれる時刻情報の差異、すなわち、時間間隔がそろっていない。そこで、入力データ処理部４００は、時間間隔を算出する。例えば、国税調査に関する入力データ４２０の時間間隔は５年単位であり、気象に関する入力データ４２０の時間間隔は１時間単位である。
【００６９】
（処理Ａ３）また、入力データ処理部４００は、各データセットの時間間隔を調整する処理を実行する。データセットに含まれる入力データ４２０の時間間隔の最小値を基準に調整すると調整が行いやすい。例えば、第１の入力データ４２０と第２の入力データ４２０との間の時間間隔が基準の時間間隔より大きい場合、入力データ処理部４００は、公知の内挿法を用いて、入力データ４２０を補完する。
【００７０】
（処理Ａ４）また、入力データ処理部４００は、サンプリング間隔に基づいて、各データセットから学習部１１０に入力する入力データを選択するサンプリングを行う。
【００７１】
以下の説明では、サンプリング以外の処理を前処理と記載する。なお、データセンタにデータを蓄積する場合、データセンタが前処理を実行してもよい。
【００７２】
ＥＳＮ４０１は、入力データ４２０から出力値を導出する。ＥＳＮ４０１は、リザーバ４１０及び線形加算部４１１から構成される。ＥＳＮ４０１の構造の詳細は後述する。
【００７３】
比較器４０２は、ＥＳＮ４０１から出力された出力値と、教師データ４２１とを比較し、比較結果に基づいてモデル（重み）を更新する。例えば、比較器４０２は、最小二乗法を用いて、二つの値の誤差が小さくなるようにモデルを更新する。
【００７４】
ここで、ＥＳＮ４０１の構造について説明する。図５は、実施例１のリザーバ４１０の構造の一例を示す図である。
【００７５】
リザーバ４１０は、複数の入力ノード５００、複数の内部ノード５０３を含む内部ネットワーク５０１、及び複数の出力ノード５０２から構成される。内部ネットワーク５０１は、内部ノード５０３の再帰的な構造の接続から構成される。図５に示す例では、入力ノード５００及び出力ノード５０２の数は１６個であり、内部ネットワーク５０１は１８個の内部ノード５０３を含む。実際のリザーバ４１０に含まれるノードの数は非常に多くなる。例えば、内部ノード５０３には内部ノード５０３が１００個以上含まれる場合がある。
【００７６】
以下の説明では、入力ノード５００、出力ノード５０２、及び内部ノード５０３を区別しない場合、ノードと記載する。
【００７７】
図５は、リザーバ４１０の論理的な構造を表すものであって、物理的な構造を表しているわけではない。すなわち、ノードは、内部状態を示す値を保持し、当該値と他ノードから入力された値（信号）とを用いた非線形変換の演算を行って内部状態を更新し、演算結果を出力する機能を表す。また、ノード間を接続する線（矢印）は、値（信号）の伝達機能を表す。なお、ノード間の値（信号）の出力は、一定のタイムステップにしたがって行われる。
【００７８】
ノード間を接続する線には重みが設定される。転送先のノードには、転送元のノードの値と当該重みとが乗算された値が転送される。
【００７９】
リザーバ４１０のデータ処理（信号処理）の詳細は非特許文献１に記載されているため、ここでは、概要を説明する。
【００８０】
入力ノード５００は、入力信号を受け付け、非線形変換された値を内部ネットワーク５０１及び出力ノード５０２に遅延なしで出力する。
【００８１】
内部ノード５０３は、他の内部ノード５０３及び出力ノード５０２のいずれかに接続される。内部ノード５０３の接続先が他の内部ノード５０３である場合、内部ノード５０３は、１タイムステップだけ遅延を発生させて他の内部ノード５０３に値を出力する。内部ノード５０３の接続先が出力ノード５０２である場合、内部ノード５０３は、出力ノード５０２に遅延無しで値を出力する。
【００８２】
出力ノード５０２は、内部ノード５０３及び他の出力ノード５０２のいずれかに接続される。また、出力ノード５０２は、外部（線形加算部４１１）にも接続される。出力ノード５０２は、１タイムステップだけ遅延を発生させて、接続される内部ノード５０３又は他の出力ノード５０２に値を出力し、また、外部（線形加算部４１１）に遅延無しで値を出力する。
【００８３】
線形加算部４１１は、リザーバ４１０の出力ノード５０２と接続し、出力ノード５０２から出力された値に重みを乗算した値を加算し、出力値として出力する。
【００８４】
リザーバ４１０の結合及び重みは固定されており、学習処理では更新されない。また、リザーバ４１０及び線形加算部４１１の接続は固定されており、学習処理では更新されない。一方、リザーバ４１０及び線形加算部４１１の接続の重みは、学習処理で更新される。
【００８５】
タイムスケールに関する記載で説明したように、出力値を算出するモデルに入力する入力データ４２０のサンプリング間隔には、最適な時間間隔が存在する。そこで、実施例１では、タイムスケールも学習処理で更新する。また、サンプリング間隔と、ＥＳＮ４０１のタイムステップとを同期させることによって、出力値と教師データとの差をさらに小さくすることができる。
【００８６】
実施例１では、学習部１１０は、学習処理が終了したあと、タイムスケールレジスタ４０３及び重みレジスタ４０４に格納されるパラメータを学習結果として学習結果管理情報１２１に格納する。
【００８７】
図６は、実施例１の学習部１１０が実行する学習処理を説明するフローチャートである。図７は、実施例１の学習処理の具体的なデータ処理の一例を示す図である。図８は、実施例１の学習処理と従来の学習処理との違いを示すグラフである。
【００８８】
学習部１１０は、学習処理の実行指示を受け付けた場合、以下で説明する学習処理を開始する。なお、周期的に実行されてもよい。
【００８９】
学習部１１０は変数ｊを初期化する（ステップＳ１０１）。ここで、変数ｊは出力値（ＫＰＩ）を識別するための添字である。ここでは、変数ｊに１が設定される。
【００９０】
次に、学習部１１０は、ターゲット出力値を選択する（ステップＳ１０２）。
【００９１】
具体的には、学習部１１０は、変数ｊに対応する出力値をターゲット出力値として選択する。
【００９２】
次に、学習部１１０は、学習データ管理情報１２０から学習データを取得する（ステップＳ１０３）。
【００９３】
具体的には、学習部１１０は、出力値種別２０２にターゲット出力値の種別が設定されたエントリを検索する。学習部１１０は、検索されたエントリに対応する学習データを取得する。
【００９４】
次に、学習部１１０は、モデルの初期設定処理を実行する（ステップＳ１０４）。具体的には、以下のような処理が実行される。
【００９５】
学習部１１０は、重みの初期値を設定することによってＥＳＮ４０１（モデル）の初期設定を行う。重みの初期値は重みレジスタ４０４に格納される。なお、重みの初期値は、ランダムに設定されてもよいし、任意のアルゴリズムに基づいて設定されてもよい。
【００９６】
また、学習部１１０は、タイムスケールを決定し、タイムスケールレジスタ４０３にタイムスケールを格納する。例えば、学習部１１０は、全てのデータセットのサンプリングの時間間隔の最小値を初期値として設定する。なお、タイムスケールの初期値は、アルゴリズムに基づいて設定されてもよいし、また、ユーザが入力してもよい。
【００９７】
次に、学習部１１０は、タイムスケールレジスタ４０３に設定されたタイムスケールに基づいてサンプリングを行うことによって入力データ４２０を選択する（ステップＳ１０５）。
【００９８】
具体的には、入力データ処理部４００は、入力データ４２０に対して前処理を実行したあと、タイムスケールに基づいてサンプリングを行って、入力データ４２０を選択する。また、入力データ処理部４００は、選択された入力データ４２０から構成される学習用時系列データをＥＳＮ４０１に入力する。
【００９９】
次、学習部１１０は、選択された入力データ４２０から構成される学習用時系列データを用いて重み更新処理を実行する（ステップＳ１０６）。具体的には、以下のような処理が実行される。
【０１００】
ＥＳＮ４０１は、タイムスケールに対応するタイムステップだけ遅延させて、学習用時系列データを構成する入力データ４２０をリザーバ４１０に入力する。さらに、ＥＳＮ４０１は、リザーバ４１０の出力結果を線形加算部４１１に入力する。線形加算部４１１は、リザーバ４１０の出力結果の重み付け加算を実行することによって出力値を算出する。ＥＳＮ４０１は、学習用時系列データを構成する全ての入力データ４２０が入力され、所定のタイムステップ分の処理が実行された後、出力値を比較器４０２に入力する。
【０１０１】
比較器４０２は、出力値及び教師データ４２１の比較結果に基づいてＥＳＮ４０１の重み及びタイムスケールを更新する。
【０１０２】
例えば、学習部１１０は、サンプリング間隔を変数とし、出力値及び教師データ４２１の誤差を示すエラー値の極小値を求めればよく、勾配法等の公知の手法を用いればよい。局所的な極小値に収束することなく、エラー値の最小値に収束させる手法で重みが更新されてもよい。この場合、重みの変化のさせ方に摂動を加える等、公知の手法を用いればよい。
【０１０３】
比較器４０２は、出力値及び教師データ４２１の誤差を示すエラー値を算出し、ワークエリアに格納されるエラー値より今回のエラー値が小さいか否かを判定する。なお、ワークエリアに格納されるエラー値より今回のエラー値が小さい場合、比較器４０２は、今回のエラー値をワークエリアに格納する。また、比較器４０２は、更新されたタイムスケールをタイムスケールレジスタ４０３に格納し、重みの保存指示を線形加算部４１１に出力する。線形加算部４１１は、重みの保存指示を受け付けた場合、更新された重みを重みレジスタ４０４に格納する。
【０１０４】
以上がステップＳ１０６の処理の説明である。
【０１０５】
次に、学習部１１０は、学習を終了するか否かを判定する（ステップＳ１０７）。
【０１０６】
具体的には、学習部１１０は、エラー値又はエラー値の変化率が閾値より小さくなるＥＳＮ４０１（モデル）が生成されたか否かを判定する。エラー値又はエラー値の変化率が閾値より小さくなるＥＳＮ４０１（モデル）が生成された場合、学習部１１０は学習を終了すると判定する。なお、重みの更新処理の実行回数が閾値より大きい場合、学習部１１０は学習を終了すると判定してもよい。
【０１０７】
学習を終了しないと判定された場合、学習部１１０は、ステップＳ１０５に戻り、同様の処理を実行する。
【０１０８】
学習を終了すると判定された場合、学習部１１０は、学習結果管理情報１２１に学習結果を格納する（ステップＳ１０８）。
【０１０９】
具体的には、学習部１１０は、学習結果管理情報１２１にエントリを追加し、追加されたエントリの出力値種別３０１にターゲット出力値の識別情報を設定する。学習部１１０は、追加されたエントリのタイムスケール３０３にタイムスケールレジスタ４０３に格納されるタイムスケールを設定し、重み３０４に重みレジスタ４０４に格納される重みを設定する。
【０１１０】
次に、学習部１１０は、全ての出力値の学習が完了したか否かを判定する（ステップＳ１０９）。
【０１１１】
全ての出力値の学習が完了していないと判定された場合、学習部１１０は、変数ｊを更新し（ステップＳ１１０）、その後、ステップＳ１０２に戻る。
【０１１２】
具体的には、学習部１１０は、変数ｊに１を加算した値を、変数ｊに設定する。
【０１１３】
全ての出力値の学習が完了したと判定された場合、学習部１１０は学習処理を終了する。
【０１１４】
ここで、図７を用いて、学習処理の流れについて説明する。
【０１１５】
ステップＳ１０３において、データ種別が異なるデータセット７００−１、７００−２、７００−３が取得されてものとする。なお、入力データ処理部４００によって、各データセット７００の時間間隔の最小値（ｔ）が同一となるように前処理が実行されたものとする。
【０１１６】
ステップＳ１０３では、学習部１１０は、データセット７００の時間間隔の最小値（ｔ）の２倍をタイムスケールとして設定する。
【０１１７】
ステップＳ１０４では、学習部１１０は、タイムスケール単位でデータセット７００−１、７００−２、７００−３から入力データ４２０を選択し、学習用時系列データ７１０−１、７１０−２、７１０−３を生成する。
【０１１８】
ステップＳ１０６では、学習部１１０は、学習用時系列データ７１０を用いて重み及びタイムスケールを更新する。
【０１１９】
ステップＳ１０７において、学習処理を終了しないと判定された場合、学習部１１０は、ステップＳ１０５では、タイムスケール単位でデータセット７００から入力データ４２０を選択する。
【０１２０】
ステップＳ１０５では、学習部１１０は、選択された入力データ４２０でデータセット７００−１、７００−２、７００−３から入力データ４２０を選択し、学習用時系列データ７１０−１、７１０−２、７１０−３を生成する。
【０１２１】
ステップＳ１０６では、学習部１１０は、学習用時系列データ７１０を用いて重み及びタイムスケールを更新する。このとき、今回のエラー値が前回よりエラー値より大きい場合、タイムスケールレジスタ４０３及び重みレジスタ４０４の値は更新されない。
【０１２２】
深層学習及びＬＳＴＭ（Ｌｏｎｇ  Ｓｈｏｒｔ−Ｔｅｒｍ  Ｍｅｍｏｒｙ）等、従来の機械学習では、ノードの組合せに対して、ノード間の接続の重みが学習される。重みの数は、例えば、内部ノードだけに着目した場合、内部ノード数の２乗のオーダとなる。したがって、ニューラルネットワークの規模が大きくなれば、機械学習に要する計算量も膨大になり、計算時間及び消費電力等の計算コストが大きくなる。
【０１２３】
一方、ＥＳＮは、学習するのは出力ノード５０２と線形加算部４１１との間の接続の重みだけであり、また、内部ノード５０３の数の計算量への影響は小さいため、機械学習に要する計算コストは従来の機械学習より大幅に削減できる。しかも、出力ノードの数は、予測精度に影響を与えない程度に自由に調整することができる。
【０１２４】
実施例１では、学習部１１０は、同一構造のリザーバ４１０を含むＥＳＮ４０１を用いて、出力値毎の出力ノード５０２と線形加算部４１１との間の重みを学習する。これによって、学習時間を短くすることができる。また、後述するように、重みを切り替えることによって一つのＥＳＮ９０１（図９参照）を用いて複数の出力値を算出することができる。また、学習結果は出力ノード５０２と線形加算部４１１との間の重みのみであるため、学習結果を格納する記憶領域を少なくできる。
【０１２５】
ここで、実施例１の学習処理とＬＳＴＭに基づく学習処理の差異について説明する。図８は、実施例１のＥＳＮとＬＳＴＭとの計算時間を比較したグラフである。図８のグラフの横軸は内部ノードの数を表し、縦軸は計算時間を表す。なお、ＥＳＮ及びＬＳＴＭの内部ノードの数は同一のものとした。
【０１２６】
図８に示すように、ＥＳＮの計算時間は、ＬＳＴＭの計算時間より３桁ほど短くなることが分かる。これは、学習するパラメータ（重み）が少なく、また、パラメータ間の関係が複雑でないことに基づく。入力データの種類及び数が多くなれば、内部ノード数を増やしてシミュレーション精度を上げる必要が生じるため、サーバの負荷の観点でＥＳＮの採用することが望ましい。
【０１２７】
次に、予測部１１１の構成及び処理の詳細について説明する。
【０１２８】
図９は、実施例１の予測部１１１の機能ブロックの一例を示す図である。
【０１２９】
予測部１１１は、入力データ処理部９００、ＥＳＮ９０１、出力部９０２、タイムスケールレジスタ９０３、及び重みレジスタ９０４を含む。
【０１３０】
入力データ処理部９００は、入力データ処理部４００と同一のものである。なお、入力データ処理部９００には、予測処理に用いる入力データ９２０が入力される。ＥＳＮ９０１はＥＳＮ４０１と同一のものである。また、タイムスケールレジスタ９０３及び重みレジスタ９０４は、タイムスケールレジスタ４０３及び重みレジスタ４０４と同一のものである。
【０１３１】
出力部９０２は、ＥＳＮ９０１から出力された出力値９２１を出力する。
【０１３２】
図１０は、実施例１の予測部１１１が実行する予測処理を説明するフローチャートである。
【０１３３】
予測部１１１は、予測処理の実行指示を受け付けた場合、以下で説明する予測処理を開始する。なお、周期的に実行されてもよい。
【０１３４】
予測部１１１は変数ｊを初期化する（ステップＳ２０１）。ここで、変数ｊは出力値（ＫＰＩ）を識別するための添字である。ここでは、変数ｊに１が設定される。
【０１３５】
次に、予測部１１１は、ターゲット出力値を選択する（ステップＳ２０２）。
【０１３６】
具体的には、予測部１１１は、変数ｊに対応する出力値をターゲット出力値として選択する。
【０１３７】
次に、予測部１１１は、シミュレーション処理に使用する入力データ９２０を取得する（ステップＳ２０３）。
【０１３８】
具体的には、予測部１１１は、データソース１５０又はデータセンタから入力データ９２０を取得する。
【０１３９】
次に、予測部１１１は、モデルの設定処理を実行する（ステップＳ２０４）。
【０１４０】
具体的には、予測部１１１は、学習結果管理情報１２１を参照し、出力値種別３０１にターゲット出力値の種別が設定されたエントリを検索する。予測部１１１は、検索されたエントリのパラメータ３０２に基づいて、タイムスケール及び重みを設定する。これによって、ターゲット出力値を算出するためのモデルが構築される。
【０１４１】
次に、予測部１１１は、タイムスケールレジスタ９０３に設定されたタイムスケールに基づいてサンプリングを行うことによって入力データ９２０を選択する（ステップＳ２０５）。
【０１４２】
具体的には、入力データ処理部９００は、入力データ９２０に対して前処理を実行したあと、タイムスケールに基づいてサンプリングを行って、入力データ９２０を選択する。また、入力データ処理部９００は、選択された入力データ９２０から構成される解析用時系列データをＥＳＮ４０１に入力する。
【０１４３】
次、予測部１１１は、選択された入力データ９２０から構成される解析用時系列データを用いてシミュレーション処理を実行する（ステップＳ２０６）。
【０１４４】
具体的には、ＥＳＮ４０１は、タイムスケールに対応するタイムステップだけ遅延させて、解析用時系列データを構成する入力データ９２０をリザーバ９１０に入力する。さらに、ＥＳＮ４０１は、リザーバ９１０の出力結果を線形加算部９１１に入力する。線形加算部９１１は、リザーバ９１０の出力結果の重み付け加算を実行することによって出力値を算出する。ＥＳＮ４０１は、解析用時系列データを構成する全ての入力データ９２０が入力され、所定のタイムステップ分の処理が実行された後、出力値を出力部９０２に入力する。
【０１４５】
以上がステップＳ２０６の処理の説明である。
【０１４６】
次に、予測部１１１は予測結果を出力する（ステップＳ２０７）。
【０１４７】
具体的には、出力部９０２は、出力装置１０６に出力値９２１を出力し、又は、ネットワークインタフェース１０４を介して接続される外部装置に出力値９２１を出力する。このとき、予測部１１１は、入力データ９２０から構成されるデータセット及び出力値９２１から構成される教師データ４２１を生成し、学習データ管理情報１２０に格納してもよい。このように、学習処理に必要な学習データを蓄積し、これを利用した学習処理を実行することによって、経時的に予測精度を高めてることが可能となる。
【０１４８】
次に、予測部１１１は、全ての出力値の出力が完了したか否かを判定する（ステップＳ２０８）。
【０１４９】
全ての出力値の出力が完了していないと判定された場合、予測部１１１は、変数ｊを更新し（ステップＳ２０９）、その後、ステップＳ２０２に戻る。
【０１５０】
具体的には、予測部１１１は、変数ｊに１を加算した値を、変数ｊに設定する。
【０１５１】
全ての出力値の出力が完了したと判定された場合、予測部１１１は予測処理を終了する。
【０１５２】
実施例１では、各出力値の重み及びタイムスケールを内部パラメータとして一つの予測部１１１に設定することによって、複数の出力値を算出することができる。
【０１５３】
次に、実施例１で説明した計算機１００の具体的な活用方法について説明する。
【０１５４】
ここでは、データセットＳａ、Ｓｂから、町の状態を表すＫＰＩである交通量及び賑わい度を算出するためのモデルが生成されているものとする。
【０１５５】
（事例１）新たなデータセットＳｃを追加したモデルを生成する場合、学習データが更新され、学習部１１０は、交通量及び賑わい度の各々に対してステップＳ１０３からステップＳ１０８までの処理を実行する。
【０１５６】
（事例２）近年の状況からデータセットＳａの補足データＳａ’も交通量及び賑わい度に寄与していることが分かった場合、学習データが更新され、学習部１１０は、交通量及び賑わい度の各々に対してステップＳ１０３からステップＳ１０８までの処理を実行する。
【０１５７】
（事例３）地価がＫＰＩとして必要となった場合、学習データが更新され、学習部１１０は、ステップＳ１０３からステップＳ１０８までの処理を実行し、地価を算出するためのモデルを生成する。
【０１５８】
ＫＰＩ群を可視化することによって、着目する都市の地価、査定の根拠等を示す情報として提供できる。なお、都市計画のＫＰＩには、教育サポートの充実度、防災設備の普及率、文化活動等が考えられる。
【０１５９】
また、エリア価値等、想定されるＫＰＩを算出するためのモデルを生成することによって、ＫＰＩの妥当性を評価することができる。妥当なＫＰＩを特定することによって、保険等の金融商品を策定する指標として活用できる。
【０１６０】
また、地域の特性を質的なものも含めて可視化できるＫＰＩを算出するためのモデルを生成することによって、ＫＰＩの妥当性を評価することができる。妥当なＫＰＩを特定することによって、街おこし及び施策の有効性及び効果を確認するための指標として活用できる。
【０１６１】
このように、実施例１の計算機１００は、都市計画の典型的な事例に対応したモデルを迅速かつ低コストで生成できる。
【０１６２】
以上で説明したように、実施例１によれば、データ種別が異なる複数のデータセット（時系列データ）から複数の出力値を算出できる計算機１００を、少ない計算コストで実現することができる。このような計算機１００は、データ駆動型の都市計画に柔軟に対応することができる。
【実施例２】
【０１６３】
実施例２は、学習部１１０及び予測部１１１の機能ブロックの構成が一部異なる。以下、実施例１等の差異を中心に実施例２を説明する。
【０１６４】
実施例２の計算機１００のハードウェア構成及びソフトウェア構成は実施例１と同一である。実施例２の学習データ管理情報１２０のデータ構造は実施例１と同一である。
【０１６５】
実施例２では、学習結果管理情報１２１に格納されるデータが一部異なる。図１１は、実施例２の学習結果管理情報１２１のデータ構造の一例を示す図である。
【０１６６】
学習結果管理情報１２１に含まれるエントリのタイムスケール３０３には、入力データ４２０毎のタイムスケールの組合せが格納される。
【０１６７】
このように、実施例２では、一つの出力値を算出するためのパラメータとして、入力データ４２０毎にタイムスケールが設定される。
【０１６８】
実施例２では、学習部１１０の機能ブロックの構成が異なる。図１２は、実施例２の学習部１１０の機能ブロックの一例を示す図である。
【０１６９】
実施例２の学習部１１０は、新たに、入力データ蓄積部１２００を含む。その他の機能ブロックは実施例１と同一である。
【０１７０】
入力データ蓄積部１２００は、入力データ処理部４００が処理した入力データ４２０を蓄積する。また、入力データ蓄積部１２００は、蓄積された入力データ４２０をＥＳＮ４０１に入力する。入力データ蓄積部１２００は、主記憶装置１０２又は副記憶装置１０３の記憶領域の一部を用いて実現してもよいし、専用のハードウェアを用いて実現してもよい。
【０１７１】
また、実施例２では、タイムスケールレジスタ４０３に格納されたタイムスケールは入力データ処理部４００にのみ入力される。
【０１７２】
図１３は、実施例２の学習部１１０が実行する学習処理を説明するフローチャートである。図１４は、実施例２の学習処理の具体的なデータ処理の一例を示す図である。
【０１７３】
ステップＳ１０１からステップＳ１０４までの処理は実施例１と同一の処理である。ただし、ステップＳ１０４では、入力データ４２０の種別毎にタイムスケールが決定される点が異なる。
【０１７４】
ステップＳ１０４の処理が実行された後、学習部１１０は、タイムスケールレジスタ４０３に設定されたタイムスケールに基づいてサンプリングを行うことによって入力データ４２０を選択し、入力データ蓄積部１２００に蓄積する（ステップＳ１５１）。具体的には、以下のような処理が実行される。
【０１７５】
（ステップＳ１５１−１）入力データ処理部４００は、取得対象の入力データ４２０の種別を選択し、対応するタイムスケールをタイムスケールレジスタ４０３から取得する。
【０１７６】
（ステップＳ１５１−２）入力データ処理部４００は、取得したタイムスケールにしたがってサンプリングを行って、入力データ４２０を選択する。また、入力データ処理部４００は、選択された入力データ４２０から構成される学習用時系列データを入力データ蓄積部１２００に蓄積する。
【０１７７】
入力データ処理部４００は、全てのデータ種別に対して（ステップＳ１５１−１）及び（ステップＳ１５１−２）を実行する。
【０１７８】
次に、学習部１１０は、学習用時系列データを用いて重み更新処理を実行する（ステップＳ１５２）。具体的には、以下のような処理が実行される。
【０１７９】
入力データ処理部４００は、入力データ蓄積部１２００から１タイムステップ分の入力データ４２０を取得し、ＥＳＮ４０１に入力する。ＥＳＮ４０１は、公知の処理にしたがって処理を実行する。ＥＳＮ４０１は、学習用時系列データを構成する全ての入力データ４２０が入力され、所定のタイムステップ分の処理が実行された後、出力値を比較器４０２に入力する。
【０１８０】
比較器４０２は、出力値及び教師データ４２１の比較結果に基づいてＥＳＮ４０１の重み及びタイムスケールを更新する。例えば、各タイムスケールを変数とするエラー値の極小値を求めればよい。
【０１８１】
ステップＳ１０７からステップＳ１１０までの処理は実施例１と同一である。
【０１８２】
実施例１では、各データ種別の学習用時系列データに含まれる入力データ４２０のサンプリング間隔が同一となるようにタイムステップが調整されていた。一方、実施例２では、入力データ４２０の種別毎にＥＳＮ４０１のタイムステップを調整する必要がない。これによって、ＥＳＮ４０１は、異なる時間間隔の入力データ４２０を同じタイムステップで処理することができる。これによって、学習の精度が大幅に向上する。
【０１８３】
ここで、図１４を用いて、学習処理の流れについて説明する。
【０１８４】
ステップＳ１０４において、データセット７００−１のタイムスケールが２ｔに設定され、データセット７００−２のタイムスケールがｔと設定され、データセット７００−３のタイムスケールが３ｔと設定されてものとする。
【０１８５】
ステップＳ１５１では、学習部１１０は、各データセット７００−１、７００−２、７００−３から、各タイムスケールに基づいてサンプリングを行って入力データ４２０を選択する。
【０１８６】
ステップＳ１５２では、学習部１１０は、学習用時系列データ７１０に含まれる入力データ４２０の時間間隔の違いにかかわらず、一つの入力データ４２０を取り出し、ＥＳＮ４０１に入力する。学習部１１０は、学習用時系列データ７１０を用いて重み及びタイムスケールを更新する。
【０１８７】
例えば、学習部１１０は、データセット７００−１、７００−２、７００−３のタイムスケールを４ｔに設定する。
【０１８８】
ステップＳ１５１では、学習部１１０は、各データセット７００−１、７００−２、７００−３から、各タイムスケールに基づいてサンプリングを行って入力データ４２０を選択する。
【０１８９】
ステップＳ１５２では、学習部１１０は、学習用時系列データ７１０に含まれる入力データ４２０の時間間隔の違いにかかわらず、一つの入力データ４２０を取り出し、ＥＳＮ４０１に入力する。学習部１１０は、学習用時系列データ７１０を用いて重み及びタイムスケールを更新する。以下、同様の処理が実行される。
【０１９０】
例えば、気温に対する二酸化炭素の排出力の影響が数年のスパンであり、日照量の影響が数日のスパンであるように、入力データが出力値に与える影響の時間間隔は異なる。そこで、ＥＳＮ４０１の１タイムステップで異なる時間間隔の入力データを扱えるように入力データ４２０の入力間隔を調整する。これによって、教師データ４２１と出力値との差異をより小さくすることができ、予測精度が高いモデルを生成することができる。
【０１９１】
実施例２では、予測部１１１の機能ブロックの構成が異なる。図１５は、実施例２の予測部１１１の機能ブロックの一例を示す図である。
【０１９２】
実施例２の予測部１１１は、新たに、入力データ蓄積部１５００を含む。その他の機能ブロックは実施例１と同一である。
【０１９３】
入力データ蓄積部１５００は、入力データ処理部９００と同一のものである。また、実施例２では、タイムスケールレジスタ９０３に格納されたタイムスケールは入力データ処理部９００にのみ入力される。
【０１９４】
図１６は、実施例２の予測部１１１が実行する予測処理を説明するフローチャートである。
【０１９５】
ステップＳ２０１からステップＳ２０４までの処理は実施例１と同一の処理である。ただし、ステップＳ２０４では、入力データ４２０の種別毎にタイムスケールが決定される点が異なる。
【０１９６】
ステップＳ２０４の処理が実行された後、予測部１１１は、タイムスケールレジスタ９０３に設定されたタイムスケールに基づいてサンプリングを行うことによって入力データ９２０を選択し、入力データ蓄積部１５００に蓄積する（ステップＳ２５１）。
【０１９７】
次に、学習部１１０は、入力データ蓄積部１５００から１タイムステップ分の入力データ４２０を選択し、ＥＳＮ４０１に入力する（ステップＳ２５２）。その後、学習部１１０はステップＳ２０６に進む。具体的には、以下のような処理が実行される。
【０１９８】
入力データ処理部９００は、入力データ蓄積部１５００から１タイムステップ分の入力データ９２０を取得し、ＥＳＮ９０１に入力する。ＥＳＮ９０１は、公知の処理にしたがって処理を実行する。
【０１９９】
ＥＳＮ９０１は、学習用時系列データを構成する全ての入力データ９２０が入力され、所定のタイムステップ分の処理が実行された後、出力値を出力部９０２に入力する。
【０２００】
ステップＳ２０７からステップＳ２０９の処理は実施例１と同一である。
【０２０１】
実施例２によれば、実施例１と同様の効果を奏する計算機１００を実現できる。また、予測精度の高いモデルを生成することができる。
【実施例３】
【０２０２】
実施例３では、学習部１１０及び予測部１１１の機能ブロックの構成が一部異なる。以下、実施例１等の差異を中心に実施例３を説明する。
【０２０３】
実施例３の計算機１００のハードウェア構成及びソフトウェア構成は実施例１と同一である。実施例３の学習データ管理情報１２０及び学習結果管理情報１２１のデータ構造は実施例１と同一である。
【０２０４】
図１７は、実施例３の学習部１１０の機能ブロックの一例を示す図である。
【０２０５】
実施例３では、ＥＳＮ４０１が複数の線形加算部４１１を含む。また、学習部１１０は、各線形加算部４１１に対応する比較器４０２を複数含み、重みレジスタ４０４を複数含む。さらに、学習部１１０は、各比較器４０２に対応するタイムスケールレジスタ４０３を複数含む。
【０２０６】
一つの出力値に対して、線形加算部４１１及び比較器４０２のペアが一つ存在するものとする。
【０２０７】
実施例３では、タイムスケールは初期値に固定される。また、タイムスケールに基づくＥＳＮ４０１のタイムステップの調整は行われない。したがって、ＥＳＮ４０１のタイムステップ及びサンプリング間隔は同一となる。
【０２０８】
図１８は、実施例３の学習部１１０が実行する学習処理を説明するフローチャートである。
【０２０９】
学習部１１０は、学習データ管理情報１２０から、各出力値を算出するモデルを生成するための学習データを取得する（ステップＳ１６１）。
【０２１０】
次に、学習部１１０は、モデルの初期設定処理を並列実行する（ステップＳ１６２）。  
【０２１１】
具体的には、学習部１１０は、線形加算部４１１の重みに初期値を設定し、各タイムスケールレジスタ４０３に初期値を設定する。
【０２１２】
なお、タイムスケールの初期値には、全てのデータセットに含まれる入力データ４２０の時間間隔の最小値、又は、種類が異なる入力データ４２０の時間間隔の共通分割数値等が設定される。
【０２１３】
次に、学習部１１０は、タイムスケールレジスタ４０３に設定されたタイムスケールに基づいてサンプリングを行うことによって、各出力値の入力データ４２０を選択する（ステップＳ１６３）。入力データ４２０を選択する処理は、ステップＳ１０５の処理と同一である。
【０２１４】
次、学習部１１０は、選択された入力データ４２０から構成される学習用時系列データを用いて重み更新処理を並列実行する（ステップＳ１６４）。
【０２１５】
重み更新処理は実施例１と同様である。各線形加算部４１１は、タイムスケールにしたがって出力値を比較器４０２に出力する。また、比較器４０２は、タイムスケールにしたがって教師データ４２１を取得し、出力値と教師データ４２１とを比較する。比較器４０２は、比較結果に基づいて重みを更新する。
【０２１６】
線形加算部４１１及び比較器４０２のペアによる重みの更新処理が完了した場合、学習部１１０は、線形加算部４１１及び比較器４０２のペアに対応するタイムスケールレジスタ４０３及び重みレジスタ４０４の値を並列に出力し、学習結果管理情報１２１に格納する。
【０２１７】
なお、線形加算部４１１及び比較器４０２のペアに対応するタイムスケールレジスタ４０３及び重みレジスタ４０４の値を対応付けるレジスタを設け、学習部１１０は、当該レジスタからの出力を学習結果管理情報１２１に格納してもよい。
【０２１８】
なお、複数の出力値に対して一つの線形加算部４１１及び比較器４０２のペアを割り当ててもよい。この場合、当該ペアは、出力値毎に重みを学習する。
【０２１９】
図１９は、実施例３の予測部１１１の機能ブロックの一例を示す図である。
【０２２０】
実施例３では、ＥＳＮ９０１が複数の線形加算部９１１を含む。また、予測部１１１は、各線形加算部９１１に対応するタイムスケールレジスタ９０３及び重みレジスタ９０４を複数含む。
【０２２１】
一つの出力に対して、線形加算部９１１、タイムスケールレジスタ９０３、及び重みレジスタ９０４の組が一つ存在するものとする。
。
【０２２２】
図２０は、実施例３の予測部１１１が実行する予測処理を説明するフローチャートである。
【０２２３】
次に、予測部１１１は、データソース１５０から、各出力値を算出するための入力データ９２０を取得する（ステップＳ２６１）。
【０２２４】
次に、予測部１１１は、モデルの設定処理を並列実行する（ステップＳ２６２）。
【０２２５】
具体的には、予測部１１１は、各タイムスケールレジスタ４０３にタイムスケールを設定し、また、各線形加算部９１１に重みを設定する。
【０２２６】
次に、予測部１１１は、タイムスケールレジスタ９０３に設定されたタイムスケールに基づいてサンプリングを行うことによって、各出力値の入力データ９２０を選択する（ステップＳ２６３）。入力データ９２０を選択する処理は、ステップＳ２０５の処理と同一である。
【０２２７】
次、予測部１１１は、選択された入力データ９２０から構成される解析用時系列データを用いてシミュレーション処理を並列実行する（ステップＳ２６４）。シミュレーション処理は実施例１と同一である。
【０２２８】
次に、予測部１１１は予測結果を出力する（ステップＳ２６５）。
【０２２９】
具体的には、出力部９０２は、出力装置１０６に出力値９２１を出力し、又は、ネットワークインタフェース１０４を介して接続される外部装置に出力値９２１を出力する。このとき、予測部１１１は、データセット及び出力値９２１から構成される教師データ４２１を生成し、学習データ管理情報１２０に格納してもよい。
【０２３０】
なお、複数の出力値に対して一つの組を割り当ててもよい。この場合、当該組は、出力値毎にパラメータを切り替えて、出力値を算出する。
【０２３１】
実施例３によれば、複数の出力値を算出するシミュレーション処理を並列実行することによって、複数の出力値を算出するための計算時間が短くなる。
【０２３２】
また、実施例１と同様に、出力値の追加又は変更に柔軟に対応することができる。したがって、例えば、オンタイムシミュレーションなど、都市の状態の現状及び時間の変化を可視するシステムに適用することができる。
【０２３３】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【０２３４】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【０２３５】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｐｙｔｈｏｎ、Ｊａｖａ（登録商標）等の広範囲のプログラム又はスクリプト言語で実装できる。
【０２３６】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【０２３７】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【０２３８】
１００  計算機
１０１  演算装置
１０２  主記憶装置
１０３  副記憶装置
１０４  ネットワークインタフェース
１０５  入力装置
１０６  出力装置
１１０  学習部
１１１  予測部
１２０  学習データ管理情報
１２１  学習結果管理情報
１５０  データソース
１６０  入力インタフェース
４００、９００  入力データ処理部
４０１、９０１  ＥＳＮ
４０２  比較器
４０３、９０３  タイムスケールレジスタ
４０４、９０４  重みレジスタ
４１０、９１０  リザーバ
４１１、９１１  線形加算部
４２０、９２０  入力データ
４２１  教師データ
５００  入力ノード
５０１  内部ネットワーク
５０２  出力ノード
５０３  内部ノード
７００  データセット
７１０  学習用時系列データ
９０２  出力部
９２１  出力値
１２００、１５００  入力データ蓄積部
【図１】
2020177509.tif 000003
【図２】
2020177509.tif 000004
【図３】
2020177509.tif 000005
【図４】
2020177509.tif 000006
【図５】
2020177509.tif 000007
【図６】
2020177509.tif 000008
【図７】
2020177509.tif 000009
【図８】
2020177509.tif 000010
【図９】
2020177509.tif 000011
【図１０】
2020177509.tif 000012
【図１１】
2020177509.tif 000013
【図１２】
2020177509.tif 000014
【図１３】
2020177509.tif 000015
【図１４】
2020177509.tif 000016
【図１５】
2020177509.tif 000017
【図１６】
2020177509.tif 000018
【図１７】
2020177509.tif 000019
【図１８】
2020177509.tif 000020
【図１９】
2020177509.tif 000021
【図２０】
2020177509.tif 000022