(57)【要約】【課題】連続的でない関数であっても、所望の精度で近似することができるようにする。【解決手段】入力データと出力データとの組を複数含む観測データに基づいて、当該ニューラルネットワークの入力層と隠れ層との間の重みを求めるための重み関数であって、当該重みのインデックスが連続的である重み関数を学習する関数学習部２１０が、入力データの範囲を表す領域を階層的に分割したことを表す二分木構造であって、各リーフが階層的に分割された領域を表す一般化ポリア木について、各リーフに割り当てられる実数を表すポリア木パラメータと、階層分割とを、階層的に分割された領域の各々では、当該領域に属する入力データがガウス過程でモデル化され、当該重み関数により求められる、入力データに適用される重みが、当該入力データが属する各階層の領域を表す各リーフに割り当てられたポリア木パラメータの乗算を用いて定められるように学習する。【選択図】図１
2019074890.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークを用いた入出力関係を表す関数を学習する関数学習装置であって、
入力データと出力データとの組を複数含む観測データに基づいて、
前記ニューラルネットワークの入力層と隠れ層との間の重みを求めるための重み関数であって、前記重みのインデックスが連続的である重み関数を学習する関数学習部を含み、
前記関数学習部は、入力データの範囲を表す領域を階層的に分割したことを表す二分木構造であって、各リーフが階層的に分割された領域を表す一般化ポリア木について、各リーフに割り当てられる実数を表すポリア木パラメータと、階層分割とを、
階層的に分割された領域の各々では、前記領域に属する入力データがガウス過程でモデル化され、
前記重み関数により求められる、入力データに適用される重みが、前記入力データが属する各階層の領域を表す各リーフに割り当てられたポリア木パラメータの乗算を用いて定められるように学習する
関数学習装置。
【請求項２】
前記関数学習部は、
各リーフのポリア木パラメータと前記階層分割とを初期化する初期化部と、
前記観測データと、前記階層分割とに基づいて、前記観測データ、前記階層分割、及び前記ポリア木パラメータを用いて予め定められた目的関数を最適化するように、各リーフのポリア木パラメータを更新するポリア木パラメータ更新部と、
前記観測データと、各リーフのポリア木パラメータとに基づいて、前記目的関数を最適化するように、前記階層分割を更新する階層分割更新部と、
予め定められた反復終了条件を満たすまで、前記ポリア木パラメータ更新部による更新と、前記階層分割更新部による更新とを繰り返させる反復判定部と、
を含む請求項１記載の関数学習装置。
【請求項３】
ニューラルネットワークを用いた入出力関係を表す関数を計算する関数計算装置であって、
請求項１または２記載の関数学習装置によって学習された重み関数を用いた前記ニューラルネットワークの関数により、入力データに対する出力データを計算する関数計算部
を含む関数計算装置。
【請求項４】
ニューラルネットワークを用いた入出力関係を表す関数を学習する関数学習装置における関数学習方法であって、
関数学習部が、入力データと出力データとの組を複数含む観測データに基づいて、前記ニューラルネットワークの入力層と隠れ層との間の重みを求めるための重み関数であって、前記重みのインデックスが連続的である重み関数を学習するステップを含み、
前記関数学習部が学習するステップについては、入力データの範囲を表す領域を階層的に分割したことを表す二分木構造であって、各リーフが階層的に分割された領域を表す一般化ポリア木について、各リーフに割り当てられる実数を表すポリア木パラメータと、階層分割とを、
階層的に分割された領域の各々では、前記領域に属する入力データがガウス過程でモデル化され、
前記重み関数により求められる、入力データに適用される重みが、前記入力データが属する各階層の領域を表す各リーフに割り当てられたポリア木パラメータの乗算を用いて定められるように学習する
関数学習方法。
【請求項５】
前記関数学習部が学習するステップは、
初期化部が、各リーフのポリア木パラメータと前記階層分割とを初期化するステップと、
ポリア木パラメータ更新部が、前記観測データと、前記階層分割とに基づいて、前記観測データ、前記階層分割、及び前記ポリア木パラメータを用いて予め定められた目的関数を最適化するように、各リーフのポリア木パラメータを更新するステップと、
階層分割更新部が、前記観測データと、各リーフのポリア木パラメータとに基づいて、前記目的関数を最適化するように、前記階層分割を更新するステップと、
反復判定部が、予め定められた反復終了条件を満たすまで、前記ポリア木パラメータ更新部による更新と、前記階層分割更新部による更新とを繰り返させるステップと、
を含む請求項４記載の関数学習方法。
【請求項６】
ニューラルネットワークを用いた入出力関係を表す関数を計算する関数計算方法であって、
関数計算部が、請求項４または５記載の関数学習方法によって学習された重み関数を用いた前記ニューラルネットワークの関数により、入力データに対する出力データを計算するステップを含む関数計算方法。
【請求項７】
コンピュータを、請求項１若しくは請求項２記載の関数学習装置、又は、請求項３記載の関数計算装置の各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、関数学習装置、関数計算装置、関数学習方法、関数計算方法、及びプログラムに関し、特に、ニューラルネットワークを用いた関数を計算するための関数学習装置、関数計算装置、関数学習方法、関数計算方法、及びプログラムに関する。
【背景技術】
【０００２】
機械学習における関数近似問題の分野では、観測データ
2019074890.tif 000003
は何でも良いが、典型的にはベクトルデータ）が与えられたときに、それぞれに対応する
2019074890.tif 000004
は何でも良いが、典型的には整数スカラー）が与えられ、下記の式（１）を満たす関数ｆ（典型的には
2019074890.tif 000005
）を学習する問題を扱っている。
【０００３】
【数１】
2019074890.tif 000006
【０００４】
ｙｉの与え方によって分類問題、識別問題、回帰問題などの様々な機械学習課題に用いることができ、ｘｉの与え方によって、音声・言語・動画・画像等の様々なメディアに適用することができる（ｘｉはそれらのメディアの特徴ベクトルを用いられることが多い）。
【０００５】
＜多重解像度ガウス過程＞
ガウス過程は平均と共分散で支配される関数への確率的生成モデルとして利用することができ、特に機械学習分野では関数近似問題への定番の道具として広く定着している。
【０００６】
ガウス過程の肝はその共分散を司るカーネルの設計にあり、その選び方によってなめらかさや周期性などの所望の性質を対象に埋め込むことが出来る。
【０００７】
しかし、実用的な意味においては、観測データ近傍や周期構造に対しては非常に精密なモデル化を達成することが出来るものの、広範囲のデータに共通する性質の埋め込みは苦手としている。
【０００８】
非特許文献１では、関数の定義域を階層分割によって木構造に細分化し、その性質が木構造の根から末端まで継承されていく形の多重解像度のガウス過程を与える方法を提案している。
【０００９】
これによって、データ近傍や周期構造のみならず、広範囲に渡す性質を関数の中に埋め込むことに成功した。
【００１０】
＜深層学習の連続版＞
また、近年機械学習分野において著しい活躍を示している深層学習のうち、非特許文献２では簡単のため一層のニューラルネットワークモデルを例として取り上げられている。
【００１１】
今定義域
2019074890.tif 000007
が与えられたもとで、
2019074890.tif 000008
を近似する問題を考える。
【００１２】
隠れ因子の数をｈとし活性化関数をｇ（例えばシグモイド関数）、Ｖを入力から隠れ層への重み行列、ａ１，・・・，ａｈを隠れ層から出力への重みを定数バイアスとすると、このニューラルネットワークの入出力関係は以下のように表せる。
【００１３】
【数１】
2019074890.tif 000009
【００１４】
ただし、Ｖｉは行列Ｖのｉ番目の列ベクトルとする。
【００１５】
ニューラルネットワークの能力を端的に表すのがＨｏｒｎｉｋらによって示されたＵｎｉｖｅｒｓａｌ  ａｐｐｒｏｘｉｍａｔｉｏｎ  ｔｈｅｏｒｅｍであり、その主張の概要は、活性化関数をシグモイド関数とする一層のニューラルネットワークは、任意の連続関数を所望の精度で近似できるというものである。
【００１６】
非特許文献２では、離散的なインデックスｉ＝１，２，・・・，ｈを連続的に拡張する方法を示しており、ａｆｆｉｎｅパラメータ化と呼ばれる方法とガウス過程への帰着の二通りの実現方法を与えた。
【先行技術文献】
【非特許文献】
【００１７】
【非特許文献１】Emily Fox and David Dunson, Multiresolution Gaussian Processes. In Advances in Neural Information Processing Systems, 2013.
【非特許文献２】Nicolas Le Roux and Yoshua Bengio, Continuous Neural Networks, Artificial Intelligence and Statistics, 2008.
【発明の概要】
【発明が解決しようとする課題】
【００１８】
本発明は、標準的なニューラルネットワーク（より具体的には可算個の隠れユニットによって構成されるニューラルネットワーク）の抱える課題を解決することを目指したものである。
【００１９】
すなわち、ニューラルネットワークに対するＵｎｉｖｅｒｓａｌ  ａｐｐｒｏｘｉｍａｔｉｏｎ  ｔｈｅｏｒｅｍの主張（一層のニューラルネットワークは任意の連続関数を所望の精度で近似できる）は応用実用上非常に強力ではあるが、一方で離散的な関数への近似に用いることが出来ない、という問題がある。
【００２０】
例えば、下記の式（３）のような関数は、一層のシグモイド関数の線形結合では所望の精度で近似することは出来ない。
【００２１】
【数３】
2019074890.tif 000010
【００２２】
そして、ニューラルネットワークを深層にすることでは、この問題の本質的な解決には繋がらない。
【００２３】
本発明は、この課題を鑑みてなされたものであり、元の関数が連続的でない場合に対しても、所望の精度で近似した関数を学習することができる関数学習装置、関数学習方法、及びプログラムを提供することを目的とする。
【００２４】
また、元の関数が連続的でない場合に対しても、所望の精度で近似した関数を計算することができる関数計算装置、関数計算方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２５】
本発明に係る関数学習装置は、ニューラルネットワークを用いた入出力関係を表す関数を学習する関数学習装置であって、入力データと出力データとの組を複数含む観測データに基づいて、前記ニューラルネットワークの入力層と隠れ層との間の重みを求めるための重み関数であって、前記重みのインデックスが連続的である重み関数を学習する関数学習部を含んで構成され、前記関数学習部は、入力データの範囲を表す領域を階層的に分割したことを表す二分木構造であって、各リーフが階層的に分割された領域を表す一般化ポリア木について、各リーフに割り当てられる実数を表すポリア木パラメータと、階層分割とを、階層的に分割された領域の各々では、前記領域に属する入力データがガウス過程でモデル化され、前記重み関数により求められる、入力データに適用される重みが、前記入力データが属する各階層の領域を表す各リーフに割り当てられたポリア木パラメータの乗算を用いて定められるように学習する。
【００２６】
また、本発明に係る関数学習方法は、ニューラルネットワークを用いた入出力関係を表す関数を学習する関数学習装置における関数学習方法であって、関数学習部が、入力データと出力データとの組を複数含む観測データに基づいて、前記ニューラルネットワークの入力層と隠れ層との間の重みを求めるための重み関数であって、前記重みのインデックスが連続的である重み関数を学習するステップを含み、前記関数学習部が学習するステップについては、入力データの範囲を表す領域を階層的に分割したことを表す二分木構造であって、各リーフが階層的に分割された領域を表す一般化ポリア木について、各リーフに割り当てられる実数を表すポリア木パラメータと、階層分割とを、階層的に分割された領域の各々では、前記領域に属する入力データがガウス過程でモデル化され、前記重み関数により求められる、入力データに適用される重みが、前記入力データが属する各階層の領域を表す各リーフに割り当てられたポリア木パラメータの乗算を用いて定められるように学習する。
【００２７】
本発明に係る関数学習装置及び関数学習方法によれば、関数学習部が、入力データと出力データとの組を複数含む観測データに基づいて、ニューラルネットワークの入力層と隠れ層との間の重みを求めるための重み関数であって、重みのインデックスが連続的である重み関数を学習する。
【００２８】
そして、関数学習部は、入力データの範囲を表す領域を階層的に分割したことを表す二分木構造であって、各リーフが階層的に分割された領域を表す一般化ポリア木について、各リーフに割り当てられる実数を表すポリア木パラメータと、階層分割とを、階層的に分割された領域の各々では、前記領域に属する入力データがガウス過程でモデル化され、前記重み関数により求められる、入力データに適用される重みが、前記入力データが属する各階層の領域を表す各リーフに割り当てられたポリア木パラメータの乗算を用いて定められるように学習する。
【００２９】
このように、ポリア木パラメータと、階層分割とを、階層的に分割された領域の各々では、当該領域に属する入力データがガウス過程でモデル化され、入力データに適用される重みが、入力データが属する各階層の領域を表す各リーフに割り当てられたポリア木パラメータの乗算を用いて定められるように学習ことにより、元の関数が連続的でない場合に対しても、所望の精度で近似した関数を学習することができる。
【００３０】
また、本発明に係る関数学習装置は、前記関数学習部が、各リーフのポリア木パラメータと前記階層分割とを初期化する初期化部と、前記観測データと、前記階層分割とに基づいて、前記観測データ、前記階層分割、及び前記ポリア木パラメータを用いて予め定められた目的関数を最適化するように、各リーフのポリア木パラメータを更新するポリア木パラメータ更新部と、前記観測データと、各リーフのポリア木パラメータとに基づいて、前記目的関数を最適化するように、前記階層分割を更新する階層分割更新部と、予め定められた反復終了条件を満たすまで、前記ポリア木パラメータ更新部による更新と、前記階層分割更新部による更新とを繰り返させる反復判定部と、を含むことができる。
【００３１】
また、本発明に係る関数学習方法は、前記関数学習部が学習するステップが、初期化部が、各リーフのポリア木パラメータと前記階層分割とを初期化するステップと、ポリア木パラメータ更新部が、前記観測データと、前記階層分割とに基づいて、前記観測データ、前記階層分割、及び前記ポリア木パラメータを用いて予め定められた目的関数を最適化するように、各リーフのポリア木パラメータを更新するステップと、階層分割更新部が、前記観測データと、各リーフのポリア木パラメータとに基づいて、前記目的関数を最適化するように、前記階層分割を更新するステップと、反復判定部が、予め定められた反復終了条件を満たすまで、前記ポリア木パラメータ更新部による更新と、前記階層分割更新部による更新とを繰り返させるステップと、を含むことができる。
【００３２】
本発明に係る関数学習装置及び関数学習方法によれば、初期化部が、各リーフのポリア木パラメータと前記階層分割とを初期化し、ポリア木パラメータ更新部が、前記観測データと、前記階層分割とに基づいて、前記観測データ、前記階層分割、及び前記ポリア木パラメータを用いて予め定められた目的関数を最適化するように、各リーフのポリア木パラメータを更新する。
【００３３】
そして、階層分割更新部が、前記観測データと、各リーフのポリア木パラメータとに基づいて、前記目的関数を最適化するように、前記階層分割を更新し、反復判定部が、予め定められた反復終了条件を満たすまで、前記ポリア木パラメータ更新部による更新と、前記階層分割更新部による更新とを繰り返させる。
【００３４】
このように、観測データ、階層分割、及びポリア木パラメータを用いて予め定められた目的関数を最適化するように、各リーフのポリア木パラメータを更新し、観測データと、各リーフのポリア木パラメータとに基づいて、目的関数を最適化するように、階層分割を更新し、反復終了条件を満たすまでこれらの更新を繰り返させることにより、元の関数が連続的でない場合に対しても、必要なパラメータの数を無制限に増やすことが出来れば原理的には所望の精度で近似した関数を学習することができる。
【００３５】
本発明に係る関数計算装置は、ニューラルネットワークを用いた入出力関係を表す関数を計算する関数計算装置であって、上記の関数学習装置によって学習された重み関数を用いた前記ニューラルネットワークの関数により、入力データに対する出力データを計算する関数計算部を含んで構成される。
【００３６】
また、本発明に係る関数計算方法は、ニューラルネットワークを用いた入出力関係を表す関数を計算する関数計算方法であって、関数計算部が、上記の関数学習方法によって学習された重み関数を用いた前記ニューラルネットワークの関数により、入力データに対する出力データを計算するステップを含む。
【００３７】
本発明に係る関数計算装置及び関数計算方法によれば、関数計算部が、上記の関数学習装置によって学習された重み関数を用いた前記ニューラルネットワークの関数により、入力データに対する出力データを計算することにより、元の関数が連続的でない場合に対しても、所望の精度で近似した関数を計算することができる。
【００３８】
本発明に係るプログラムは、上記の関数学習装置又は関数計算装置の各部として機能させるためのプログラムである。
【発明の効果】
【００３９】
本発明の関数学習装置、関数学習方法、及びプログラムによれば、元の関数が連続的でない場合に対しても、所望の精度で近似した関数を学習することができる。
【００４０】
また、本発明の関数計算装置、関数計算方法、及びプログラムによれば、元の関数が連続的でない場合に対しても、所望の精度で近似した関数を計算することができる。
【図面の簡単な説明】
【００４１】
【図１】本発明の実施の形態に係る関数学習装置の構成を示す概略図である。
【図２】抽出されたリーフが終端だった場合の追加候補の生成の例を示す図である。
【図３】抽出されたリーフが終端だった場合の修正候補の生成の例を示す図である。
【図４】抽出されたリーフが終端だった場合の融合候補の生成の例を示す図である。
【図５】抽出されたリーフが終端でない場合の修正候補の生成の例を示す図である。
【図６】本発明の実施の形態に係る関数学習装置における関数学習のためのアルゴリズムの例を示す図である。
【図７】本発明の実施の形態に係る関数学習装置の関数学習処理フローを示すフローチャートである。
【図８】本発明の実施の形態に係る関数学習装置のポリア木パラメータの更新処理フローを示すフローチャートである。
【図９】本発明の実施の形態に係る関数学習装置の階層分割の更新処理フローを示すフローチャートである。
【図１０】本発明の実施の形態に係る関数計算装置の構成を示す概略図である。
【図１１】本発明の実施の形態に係る関数計算装置の関数計算処理フローを示すフローチャートである。
【発明を実施するための形態】
【００４２】
以下、本発明の実施の形態について図面を用いて説明する。
【００４３】
＜本発明の実施の形態に係る関数学習装置の原理＞
＜＜一般化ポリア木とガウス過程の融合によるニューラルネットワークモデルの拡張＞＞
まず、本発明の実施の形態に係る関数学習装置の原理について説明する。
【００４４】
ニューラルネットワークの表現能力を上げるべく、深層にする以外のもう一つの有力な方法として、Ｌｅ  Ｒｏｕｘらによって提案された隠れ層の連続拡張が挙げられる（非特許文献２）。
【００４５】
具体的には、前述のニューラルネットワークモデルにおける隠れユニットのインデックスを連続にすることによって実現することができる。
【００４６】
【数４】
2019074890.tif 000011
ただし、
2019074890.tif 000012
は隠れ層から出力への重み関数、
2019074890.tif 000013
は入力から隠れ層への重み関数である。
【００４７】
また、２つのユークリッド空間の次元ｍ、ｄは自由に定めることができる。特に、ｕの取りうる集合Ｅを
2019074890.tif 000014
にとると、すなわち、ｕをスカラーとすると、下記の式（５）に書き直すことができる。
【００４８】
【数５】
2019074890.tif 000015
【００４９】
さらに、ａの逆関数をＡとし、ｔ＝Ａ（ｕ）の変数変換を導入し、ＶＡ（ｔ）：＝Ｖ（Ａ−１（ｔ））と書き直すと、下記の式（６）が得られる。
【００５０】
【数６】
2019074890.tif 000016
【００５１】
より分かりやすく積分範囲を［０，１］に制限すると、すなわち、ｚ＝（ｔ−ｔ０）／αなる変数を導入し、αはＥの長さ、ｔ０＝ｉｎｆ（Ａ−１（Ｅ））とすると、下記の式（７）が得られる。
【００５２】
【数７】
2019074890.tif 000017
【００５３】
この拡張は、通常の可算個の隠れユニットを持つニューラルネットワークモデルを包含している。具体的には、Ｖ（ｚ）＝Ｖｉ（ｐｉ−１≦ｚ＜ｐｚ）のようなステップ関数を選ぶことによって、通常のニューラルネットワークに帰着することができる。
【００５４】
また、この拡張のもとでも標準的なＵｎｉｖｅｒｓａｌ  ａｐｐｒｏｘｉｍａｔｉｏｎ  ｔｈｅｏｒｅｍの主張する能力は継承される。つまり、任意の連続関数を所望の精度で近似することが可能である。この拡張により離散的な関数への近似も可能になったかは不明である。
【００５５】
Ｌｅ  Ｒｏｕｘらの深層学習の連続拡張は、当該分野に大いなる期待を与えたものの、発案からその後１０年経った現在、その拡張方法は定着していない。その一番の原因が実際の表現方法の限界にある。
【００５６】
Ｌｅ  Ｒｏｕｘらは２つの表現方法を提案している。１つはＶへのａｆｆｉｎｅ近似、もう１つは、カーネル法を用いたガウス過程化である。
【００５７】
特に、ガウス過程としての解釈は、Ｌｅ  Ｒｏｕｘらの仕事よりも以前から見出されており、その意味で深層学習の連続学習はその表現方法がネックとなって当該分野への貢献に繋がらなかった。
【００５８】
本発明の実施の形態は、上記Ｖへの表現法としてポリア木と呼ばれるディリクレ過程を包含する広いクラスの確率過程をさらに一般化したものを適用する。
【００５９】
ｅ＝（ｅ１，・・・，ｅｍ）をバイナリ系列、
2019074890.tif 000018
を［０，１］の入れ子状の階層分割、Ａ＝｛α，αｅ＞０｝を正の実数の集合として、一般化ポリア木を下記式（８）〜（１０）のような確率生成モデルとする。
【００６０】
【数８】
2019074890.tif 000019
【００６１】
一般化ポリア木はＡの与え方によってＶを連続的にも離散的にも支配することができる。仮に、αｅ＝αｅ０＋αｅ１とした場合、これはインド料理店過程を用いた可算無限ニューラルネットワークモデルと密接な関係を与えることができる。
【００６２】
上記の一般化ポリア木に基づく非可算無限ニューラルネットワークモデルは、モデル構成としては期待通りの性質を持っている一方で、応用実用上の問題が残る。
【００６３】
すなわち、従来、ポリア木を用いた確率モデルへの推論は難問であることが知られており、既存の近似推論アルゴリズムの多くは、ポリア木が本来持っている連続関数への表現能力を捨てることに相当している。
【００６４】
実際、連続関数へのフィッティングを行う場合においては、推論すべきパラメータが非可算無限存在することとなり、現在の計算機における素朴な方法でこれを実現する方法は無い。
【００６５】
そこで、連続関数への表現能力を失うことなくデータへのフィッティング推論が可能な表現が必要となる。本発明の実施の形態は、一般化ポリア木とカーネル法の融合によって、連続関数への表現能力を失うことなくデータへのフィッティング推論が可能な表現を実現する。
【００６６】
カーネル法に基づくニューラルネットワークは、下記の式（１１）の関数表現からなるガウス過程と捉えることができる。ただし、ｇｘ（ｕ）＝ｇ（ｘ・ｕ）とする。
【００６７】
【数９】
2019074890.tif 000020
【００６８】
これを一般化ポリア木を用いた非可算無限ニューラルネットワークの観点から見た際には、入れ子構造を持つ階層分割が深さ０となっている状況と捉えることができる。このことに注目すると、上記カーネル法に基づく深層学習表現と、一般化ポリア木に基づく非可算無限ニューラルネットワークとの融合として、下記の式（１２）に示すモデル化にたどり着く。
【００６９】
【数１０】
2019074890.tif 000021
【００７０】
すなわち、関数ｆがａとｇによる内積の形で表示できる。ここで、
2019074890.tif 000022
は、
2019074890.tif 000023
の時のみ機能している。すなわち、下記の式（１３）であることを意味している。
【００７１】
【数１１】
2019074890.tif 000024
【００７２】
これによって、
2019074890.tif 000025
は、平均を一般化ポリア木によって与えられるＶ（Ｂｅ）、共分散を
2019074890.tif 000026
においてのみ非零となったガウス過程に従うものとしてモデル化することができる。
【００７３】
本モデルは素朴なマルコフ連鎖モンテカルロ法による推論が可能となっている。すなわち、階層分割を更新するステップと、階層分割における末端での局所的なガウス過程フィッティングを行うステップを交互に繰り返していくことで、事後分布へ漸近していくようなマルコフ連鎖を構成することができる。
【００７４】
さらに、この推論法において、本来の我々の理想であるＶに関する連続的な関数・離散的な関数どちらともへの近似能力を失うことはない。
【００７５】
有限の観測データにフィッティングを行う状況において、推論できる解消度が離散的な関数に限定されることが標準的な振る舞いではあるが、モデルとしては連続的な関数への候補を考慮した上での学習を行うことができる。
【００７６】
＜＜確率的生成モデル＞＞
関数
2019074890.tif 000027
が単一のガウス過程から生成されたものだとすると、すなわち、一般化ポリア木の深さが０であった場合は、平均関数
2019074890.tif 000028
と、共分散関数
2019074890.tif 000029
とを用いて、下記の式（１４）のように表現する。
【００７７】
【数１２】
2019074890.tif 000030
【００７８】
ガウス過程の象徴的な性質は、任意の
2019074890.tif 000031
に対して、常に下記の式（１５）が成り立つことである。
【００７９】
【数１３】
2019074890.tif 000032
【００８０】
ここで、Ｇａｕｓｓｉａｎ（μ，Ｋ）は、平均μ、共分散行列Ｋとする多変量ガウス分布を表し、μ＝［ｑ（ｘ１），・・・，ｑ（ｘｎ）］，［Ｋ］ｉ，ｊ＝ｃ（ｘｉ，ｘｊ）である。
【００８１】
一般化ポリア木が深さｍであった場合は、下記の式（１６）のように表現することができる。
【００８２】
【数１４】
2019074890.tif 000033
【００８３】
ただし、ｃｅは
2019074890.tif 000034
に対して与えられた共分散関数である。典型的には、この共分散関数ｃｅは、人手で設計するのが一般的であり、例えばガウスカーネルを選ぶことができる。
【００８４】
このように、一般化ポリア木とガウス過程の融合によるニューラルネットワークモデルを拡張し、これを確率的生成モデルの形で記述することで、本発明の実施の形態に係る関数学習装置によって、元の関数が連続的でない場合に対しても、所望の精度で近似することができるようにする。
【００８５】
＜本発明の実施の形態に係る関数学習装置の構成＞
次に、本発明の実施の形態に係る関数学習装置の構成について説明する。図１は、本発明の実施の形態に係る関数学習装置の構成を示す概略図である。
【００８６】
本発明の実施の形態に係る関数学習装置１０は、ニューラルネットワークを用いた入出力関係を表す関数を学習する装置である。この関数学習装置１０は、ＣＰＵと、ＲＡＭと、後述する関数学習処理ルーチンを実行するためのプログラムを記憶したＲＯＭとを備えたコンピュータで構成され、機能的には次に示すように構成されている。
【００８７】
図１に示すように、関数学習装置１０は、入力データと出力データとの組を複数含む観測データを入力する入力部１００と、入力部１００に入力された観測データから、ニューラルネットワークを用いた入出力関係を表す関数を学習する演算部２００と、演算部２００によって学習された関数を出力する出力部３００とを備えて構成される。
【００８８】
入力部１００は、既知のキーボード、記憶装置などの入力器により実現される。また、入力部１００は、インターネット等のネットワークを介して観測データを入力するネットワークインターフェースでも良い。
【００８９】
出力部３００は、ディスプレイ、プリンタ、磁気ディスクなどで実装される。
【００９０】
演算部２００は、ニューラルネットワークの入力層と隠れ層との間の重みを求めるための重み関数であって、当該重みのインデックスが連続的である重み関数を学習する関数学習部２１０を備えて構成される。
【００９１】
関数学習部２１０は、入力データの範囲を表す領域を階層的に分割したことを表す二分木構造であって、各リーフが階層的に分割された領域を表す一般化ポリア木について、各リーフに割り当てられる実数を表すポリア木パラメータと、階層分割Πとを、階層的に分割された領域の各々では、当該領域に属する入力データがガウス過程でモデル化され、当該重み関数により求められる、入力データに適用される重みが、当該入力データが属する各階層の領域を表す各リーフに割り当てられたポリア木パラメータの乗算を用いて定められるように学習する。
【００９２】
本実施形態では、関数学習部２１０は、提案モデルを観測データにフィッティングさせる方法として、マルコフ連鎖モンテカルロ法による推論手法の例によって、関数の学習を行う。
【００９３】
具体的には、関数学習部２１０は、反復的に、入力データｘと出力データｙとの組を複数含む観測データ（ｘ１，ｙ１），・・・，（ｘｎ，ｙｎ）が与えられたもとで、ポリア木パラメータ｛Ｙｅ｝（バイナリ木構造の全リーフに１つずつ実数を持つパラメータ）、
2019074890.tif 000035
の階層分割
2019074890.tif 000036
を逐次的に更新する。
【００９４】
なお、Ａ＝｛α，αｅ＞０｝、共分散関数ｃｅ、及び反復回数については、あらかじめ与えられているものとする。
【００９５】
ここで、当該推論手法は、推論すべき各パラメータの更新候補を確率的に生成し、その更新を受理・棄却する操作を確率的に行う。その受理・棄却の操作のためには、下記の式（１７）で表す目的関数Ｌを用いる。
【００９６】
【数１５】
2019074890.tif 000037
【００９７】
ただし、Ｌ１及びＬ２は、下記の式（１８）で表される。
【００９８】
【数１６】
2019074890.tif 000038
【００９９】
より具体的には、関数学習部２１０は、初期化部２１２と、ポリア木パラメータ更新部２１４と、階層分割更新部２１６と、反復判定部２１８とを含んで構成される。
【０１００】
初期化部２１２は、各リーフのポリア木パラメータと前記階層分割とを初期化する。
【０１０１】
具体的には、初期化部２１２は、まず、一般化ポリア木について、各リーフに割り当てられる実数を表すポリア木パラメータ｛Ｙｅ｝に対して、その確率的生成モデル（事前分布）から乱数を生成し、生成した乱数をポリア木パラメータ｛Ｙｅ｝の初期値とする。
【０１０２】
次に、初期化部２１２は、階層分割Πに対して、その確率的生成モデル（事前分布）から乱数を生成し、生成した乱数を階層分割Πの初期値とする。
【０１０３】
そして、初期化部２１２は、ポリア木パラメータ｛Ｙｅ｝の初期値、及び階層分割Πの初期値を、ポリア木パラメータ更新部２１４に渡す。
【０１０４】
ポリア木パラメータ更新部２１４は、観測データと、階層分割とに基づいて、観測データ、階層分割、及びポリア木パラメータを用いて予め定められた目的関数Ｌを最適化するように、各リーフのポリア木パラメータを更新する。
【０１０５】
具体的には、ポリア木パラメータ更新部２１４は、各パラメータＹｅが、Ｂｅｔａ（ａｅ０，ａｅ１）の事前分布に従うことを利用して、当該Ｙｅの更新先の候補を決定し、目的関数Ｌに基づいた確率に従って、当該Ｙｅを更新する。
【０１０６】
まず、ポリア木パラメータ更新部２１４は、現在の更新前のパラメータのもとで、目的関数Ｌを計算し、その値をＬｏｌｄとしておく。
【０１０７】
次に、Ｂｅｔａ（ａｅ０，ａｅ１）に従う乱数を生成し、これをＹｅの更新先の候補とする。そして、候補のＹｅを用いて目的関数Ｌを計算し、その値をＬｎｅｗとする。
【０１０８】
新しいＹｅの更新先の候補に関して、以下の式（１９）に基づいて確率を計算し、その確率に基づいてその候補を受理するか否かを判断する。
【０１０９】
【数１７】
2019074890.tif 000039
【０１１０】
受理された場合、候補のＹｅを新しいＹｅとして更新し、受理されなかった場合、現在のＹｅを維持する。
【０１１１】
そして、ポリア木パラメータ更新部２１４は、更新後のポリア木パラメータ｛Ｙｅ｝を階層分割更新部２１６に渡す。
【０１１２】
階層分割更新部２１６は、観測データと、各リーフのポリア木パラメータとに基づいて、目的関数Ｌを最適化するように、階層分割を更新する。
【０１１３】
具体的には、階層分割更新部２１６は、まず、バイナリ系列ｅ＝｛ｅ１，・・・，ｅｍ）が表す二分木の全てのリーフの中から一様分布に基づいて、１つのリーフＢｅを抽出する。
【０１１４】
次に、抽出したリーフＢｅが、終端であるか否かを判断し、（１）抽出したリーフＢｅが終端である場合、（２）抽出したリーフＢｅが終端でない場合のそれぞれについて、下記のように階層分割Πを更新する。
【０１１５】
（１）抽出したリーフＢｅが終端である場合、一様分布の確率に従って、以下の追加、修正、融合の３つの操作のうち１つを実行する。
【０１１６】
＜＜追加＞＞
追加では、抽出したリーフＢｅに対して、一様な線形分割を乱数により生成し、更新先の候補を生成する。
【０１１７】
そして、現在の分割により計算される目的関数Ｌの値をＬｏｌｄ、更新先の候補を用いて計算される目的関数Ｌの値をＬｎｅｗとして、下記の式（２０）による確率を求める。
【０１１８】
【数１８】
2019074890.tif 000040
【０１１９】
求めた確率に基づいて、新しい候補を更新先として受理するか否かを決定し、受理された場合に、新しい候補を更新先として採用する。受理されない場合は、現在の分割を維持する。
【０１２０】
図２は、抽出されたリーフが終端だった場合の追加候補の生成の例を示す図である。
【０１２１】
図２に示すように、抽出したリーフＢｅが、終端である場合（図２の左図）、抽出したリーフＢｅに対して追加候補が生成される（図２の右図）。
【０１２２】
＜＜修正＞＞
修正では、抽出したリーフＢｅの親リーフ（これをＢｅ’と書くことにする）に対して、一様な線形分割を乱数により生成し、更新先の候補を生成する。
【０１２３】
そして、現在の分割により計算される目的関数Ｌの値をＬｏｌｄ、更新先の候補を用いて計算される目的関数Ｌの値をＬｎｅｗとして、下記の式（２１）による確率を求める。
【０１２４】
【数１９】
2019074890.tif 000041
【０１２５】
求めた確率に基づいて、新しい候補を更新先として受理するか否かを決定し、受理された場合に、新しい候補を更新先として採用する。受理されない場合は、現在の分割を維持する。
【０１２６】
図３は、抽出されたリーフが終端だった場合の修正候補の生成の例を示す図である。
【０１２７】
図３に示すように、抽出したリーフＢｅが、終端である場合（図３の左図）、抽出したリーフＢｅの親リーフＢｅ’に対して修正候補が生成される（図３の右図）。
【０１２８】
＜＜融合＞＞
融合では、抽出したリーフＢｅの親リーフＢｅ’に対して、その子ノードにあたる分割を削除し融合を更新先の候補とする。
【０１２９】
そして、現在の分割により計算される目的関数Ｌの値をＬｏｌｄ、更新先の候補を用いて計算される目的関数Ｌの値をＬｎｅｗとして、下記の式（２２）による確率を求める。
【０１３０】
【数２０】
2019074890.tif 000042
【０１３１】
求めた確率に基づいて、新しい候補を更新先として受理するか否かを決定し、受理された場合に、新しい候補を更新先として採用する。受理されない場合は、現在の分割を維持する。
【０１３２】
図４は、抽出されたリーフが終端だった場合の融合候補の生成の例を示す図である。
【０１３３】
図４に示すように、抽出したリーフＢｅが、終端である場合（図４の左図）、抽出したリーフＢｅの親リーフＢｅ’の子ノードが削除され、融合候補が生成される（図４の右図）。
【０１３４】
（２）抽出したリーフＢｅが終端でない場合、一様分布によって以下の修正の操作を実行する。
【０１３５】
この場合の修正では、抽出したリーフＢｅの親リーフＢｅ’に対して、子ノードの分割への矛盾の無い範囲で、一様な線形分割を乱数により生成し、更新先の候補を生成する。
【０１３６】
そして、現在の分割により計算される目的関数Ｌの値をＬｏｌｄ、更新先の候補を用いて計算される目的関数Ｌの値をＬｎｅｗとして、下記の式（２３）による確率を求める。
【０１３７】
【数２１】
2019074890.tif 000043
【０１３８】
求めた確率に基づいて、新しい候補を更新先として受理するか否かを決定し、受理された場合に、新しい候補を更新先として採用する。受理されない場合は、現在の分割を維持する。
【０１３９】
図５は、抽出されたリーフが終端でない場合の修正候補の生成の例を示す図である。
【０１４０】
図５に示すように、抽出したリーフＢｅが、終端でない場合（図５の左図）、抽出したリーフＢｅの親リーフＢｅ’に対して、子ノードの分割への矛盾の無い範囲で、修正候補が生成される（図５の右図）。
【０１４１】
そして、階層分割更新部２１６は、ポリア木パラメータ｛Ｙｅ｝、及び更新した階層分割Πを、反復判定部２１８に渡す。
【０１４２】
反復判定部２１８は、予め定められた反復終了条件を満たすまで、ポリア木パラメータ更新部２１４による更新と、階層分割更新部２１６による更新とを繰り返させる。
【０１４３】
具体的には、反復判定部２１８は、ポリア木パラメータ更新部２１４による更新、及び階層分割更新部２１６による更新の回数が、あらかじめ指定された反復回数に到達しているか否かを判断する。
【０１４４】
反復回数に達していない場合、反復判定部２１８は、ポリア木パラメータ｛Ｙｅ｝、及び階層分割Πを、ポリア木パラメータ更新部２１４に渡し、ポリア木パラメータ更新部２１４による更新と、階層分割更新部２１６による更新とを繰り返させる。
【０１４５】
一方、反復回数に達している場合、反復判定部２１８は、ポリア木パラメータ｛Ｙｅ｝、及び階層分割Πを、出力部３００に渡す。
【０１４６】
出力部３００は、反復判定部２１８から受け取ったポリア木パラメータ｛Ｙｅ｝、及び階層分割Πを、出力する。
【０１４７】
具体的には、出力部３００は、ポリア木パラメータ｛Ｙｅ｝、及び階層分割Πを記憶媒体に保存しておく。
【０１４８】
＜本発明の実施の形態に係る関数学習装置の作用＞
図６は、本発明の実施の形態に係る関数学習装置における関数学習のための推論アルゴリズムの例を示す図である。
【０１４９】
Ａｌｇｏｒｉｔｈｍ１の説明のため、図７において、本発明の実施の形態に係る関数学習処理フローを示すフローチャートを示す。
【０１５０】
入力部１００に観測データが入力されると、演算部２００において、図７に示す関数学習処理フローが実行される。
【０１５１】
まず、ステップＳ１００において、初期化部２１２が、入力部１００に入力された入力データと出力データとの組（ｘｉ，ｙｉ）を複数含む観測データを受け取る。
【０１５２】
なお、共分散関数ｃｅ、及び反復回数は予め定められていても良いし、入力部１００に入力されても良い。
【０１５３】
ステップＳ１１０において、初期化部２１２は、ポリア木の深さｍと、各リーフのポリア木パラメータ｛Ｙｅ｝と、階層分割Πとを、それぞれの事前分布から生成される乱数を用いて初期化して、ポリア木パラメータ更新部２１４へ渡す。
【０１５４】
ステップＳ１２０において、反復判定部２１８は、反復回数をカウントするための変数ｉに１を設定しておく。
【０１５５】
ステップＳ１３０において、ポリア木パラメータ更新部２１４は、観測データと、階層分割Πとに基づいて、観測データ、階層分割Π、及びポリア木パラメータ｛Ｙｅ｝を用いて予め定められた目的関数Ｌを最適化するように、各リーフのポリア木パラメータ｛Ｙｅ｝を更新する処理を行う。
【０１５６】
ステップＳ１４０において、階層分割更新部２１６は、観測データと、各リーフのポリア木パラメータ｛Ｙｅ｝とに基づいて、目的関数Ｌを最適化するように、階層分割Πを更新する処理を行う。
【０１５７】
ステップＳ１５０において、反復判定部２１８は、ｉが反復回数（例えば、１０００）より小さいか否かを判定する。
【０１５８】
ｉが反復回数より小さい場合（ステップＳ１５０のＹＥＳ）、ステップＳ１６０において、反復判定部２１８は、ｉに１を加算し、ステップＳ１３０へ戻る。そして、ポリア木パラメータ｛Ｙｅ｝の更新処理と、階層分割Πの更新処理を、ｉが反復回数に達するまで繰り返す。
【０１５９】
一方、ｉが反復回数以上である場合（ステップＳ１５０のＮＯ）、ステップＳ１７０において、出力部３００は、最終的なポリア木パラメータ｛Ｙｅ｝と、階層分割Πとを出力する。
【０１６０】
ここで、ステップＳ１３０におけるポリア木パラメータ｛Ｙｅ｝の更新処理について、図８を用いて説明する。図８は、ポリア木パラメータの更新処理フローを示すフローチャートである。
【０１６１】
ステップＳ２００において、ポリア木パラメータ更新部２１４は、長さｍ以下の全てのバイナリ系列ｅから、１番目のバイナリ系列ｅを選択する。
【０１６２】
ステップＳ２１０において、ポリア木パラメータ更新部２１４は、Ｙｅの現在の値から、式（１７）に従ってＬｏｌｄを算出する。
【０１６３】
ステップＳ２２０において、ポリア木パラメータ更新部２１４は、Ｙｅの新しい候補をＢｅｔａ（ａｅ０，ａｅ１）から生成し、式（１７）に従ってＬｎｅｗを算出する。
【０１６４】
ステップＳ２３０において、ポリア木パラメータ更新部２１４は、式（１９）に従って確率を計算し、当該確率に従ってＹｅの新しい候補を受理するか否かを判定する。
【０１６５】
Ｙｅの新しい候補を受理する場合（ステップＳ２３０のＹＥＳ）、ステップＳ２４０において、ポリア木パラメータ更新部２１４は、Ｙｅの新しい候補をＹｅとして更新する。
【０１６６】
一方、Ｙｅの新しい候補を受理しない場合（ステップＳ２３０のＮＯ）、Ｙｅの新しい候補をＹｅとして更新せずに、ステップＳ２５０に進む。
【０１６７】
ステップＳ２５０において、長さｍ以下の全てのバイナリ系列ｅのうち、未処理のバイナリ系列ｅが存在するか否かを判定する。
【０１６８】
未処理のバイナリ系列ｅが存在する場合（ステップＳ２５０のＹＥＳ）、ステップＳ２６０において、次のバイナリ系列ｅを選択し、ステップＳ２１０〜ステップＳ２４０を繰り返す。
【０１６９】
一方、未処理のバイナリ系列ｅが存在しない場合（ステップＳ２５０のＮＯ）、リターンする。
【０１７０】
次に、ステップＳ１４０における階層分割Πの更新処理について、図９を用いて説明する。図９は、階層分割の更新処理フローを示すフローチャートである。
【０１７１】
ステップＳ３００において、階層分割更新部２１６は、長さｍ以下の全てのバイナリ系列ｅのうち、１番目のバイナリ系列ｅを選択する。
【０１７２】
ステップＳ３１０において、階層分割更新部２１６は、選択されたバイナリ系列ｅに対応するリーフＢｅが終端であるか否かを判定する。
【０１７３】
Ｂｅが終端である場合（ステップＳ３１０のＹＥＳ）、ステップＳ３２０において、実行する操作を、一様分布に従って、追加、修正、融合のうちの何れかを選択する。
【０１７４】
当該選択することについては、例えば、一様分布Ｕｎｉｆｏｒｍ（１／３，１／３，１／３）に従って追加、修正、融合のうち何れかを選択する。
【０１７５】
ステップＳ３３０において、階層分割更新部２１６は、選択した操作が追加か否かを判定する。
【０１７６】
選択した操作が追加である場合（ステップＳ３３０のＹＥＳ）、ステップＳ３４０において、選択されたバイナリ系列ｅに対応するリーフＢｅに対して、一様な線形分割を乱数により生成したものを、更新先の候補として生成する。その後、ステップＳ３９０に進む。
【０１７７】
一方、選択した操作が追加でない場合（ステップＳ３３０のＮＯ）、ステップＳ３５０において、選択した操作が修正であるか否かを判定する。
【０１７８】
選択した操作が修正である場合（ステップＳ３５０のＹＥＳ）、ステップＳ３６０において、選択されたバイナリ系列ｅに対応するリーフＢｅの親リーフＢｅ’に対して、一様な線形分割を乱数により生成し、更新先の候補を生成する。その後ステップＳ３９０に進む。
【０１７９】
一方、選択した操作が修正でない場合（ステップＳ３５０のＮＯ）、選択された操作は融合であるため、ステップＳ３７０において、選択されたバイナリ系列ｅに対応するリーフＢｅの親リーフＢｅ’に対して、その子ノードにあたる分割を削除し、融合を更新先の候補とする。
【０１８０】
一方、Ｂｅが終端でない場合（ステップＳ３１０のＮＯ）、ステップＳ３８０において、選択されたバイナリ系列ｅに対応するリーフＢｅの親リーフＢｅ’に対して、子ノードの分割への矛盾の無い範囲で、一様な線形分割を乱数により生成し、更新先の候補を生成する。
【０１８１】
ステップＳ３９０において、現在の分割により計算される目的関数Ｌの値をＬｏｌｄとして算出する。
【０１８２】
ステップＳ４００において、更新先の候補を用いて計算される目的関数Ｌの値をＬｎｅｗとして算出する。
【０１８３】
ステップＳ４１０において、階層分割更新部２１６は、操作に応じて式（２０）〜式（２３）に従って確率を計算し、当該確率に従って新しい候補を更新先として受理するか否かを判定する。
【０１８４】
新しい候補を更新先として受理する場合（ステップＳ４１０のＹＥＳ）、ステップＳ４２０において、新しい候補を更新先として階層分割Πを更新する。
【０１８５】
新しい候補を更新先として受理しない場合（ステップＳ４２０のＮＯ）、階層分割Πを更新せずに、ステップＳ４３０に進む。
【０１８６】
ステップＳ４３０において、未処理のバイナリ系列ｅが存在するか否かを判定する。
【０１８７】
未処理のバイナリ系列ｅが存在する場合（ステップＳ４３０のＹＥＳ）、ステップＳ４４０において、次のバイナリ系列ｅを選択し、ステップＳ３１０〜ステップＳ４２０を繰り返す。
【０１８８】
一方、未処理のバイナリ系列ｅが存在しない場合（ステップＳ４３０のＮＯ）、リターンする。
【０１８９】
以上説明したように、本発明の実施の形態に係る関数学習装置、関数学習方法、及びプログラムによれば、ポリア木パラメータと、階層分割とを、階層的に分割された領域の各々では、当該領域に属する入力データがガウス過程でモデル化され、入力データに適用される重みが、入力データが属する各階層の領域を表す各リーフに割り当てられたポリア木パラメータの乗算を用いて定められるように学習ことにより、元の関数が連続的でない場合に対しても、所望の精度で近似した関数を学習することができる。
【０１９０】
＜本発明の実施の形態に係る関数計算装置の構成＞
次に、本発明の実施の形態に係る関数計算装置の構成について説明する。図１０は、本発明の実施の形態に係る関数計算装置の構成を示す概略図である。
【０１９１】
本発明の実施の形態に係る関数計算装置２０は、ニューラルネットワークを用いた入出力関係を表す関数を計算する装置である。この関数計算装置２０は、ＣＰＵと、ＲＡＭと、後述する関数計算処理ルーチンを実行するためのプログラムを記憶したＲＯＭとを備えたコンピュータで構成され、機能的には次に示すように構成されている。
【０１９２】
図１０に示すように、関数計算装置２０は、入力データを入力する入力部４００と、入力部４００に入力された入力データについて、ニューラルネットワークを用いた入出力関係を表す関数を計算する演算部５００と、演算部５００によって計算された結果を出力する出力部６００とを備えて構成される。
【０１９３】
入力部４００は、既知のキーボード、記憶装置などの入力器により実現される。また、入力部４００は、インターネット等のネットワークを介して観測データを入力するネットワークインターフェースでも良い。
【０１９４】
出力部６００は、ディスプレイ、プリンタ、磁気ディスクなどで実装される。
【０１９５】
演算部５００は、記憶部５２０と、関数計算部５３０とを含んで構成される。
【０１９６】
記憶部５２０は、上記の関数学習装置１０によって学習された重み関数が記憶されている。
【０１９７】
具体的には、記憶部５２０は、共分散関数ｃｅと、上記の関数学習装置１０の出力部３００が出力した、ポリア木パラメータ｛Ｙｅ｝、及び階層分割Πとが記憶されている。
【０１９８】
関数計算部５３０は、記憶部５２０によって記憶されている上記の関数学習装置１０によって学習された重み関数を用いたニューラルネットワークの関数により、入力部４００から入力された入力データｘに対する出力データｙを計算する。
【０１９９】
具体的には、上記式（１６）を用いてｙ（＝ｆ（Ｂｅ））を計算する。ただし、
2019074890.tif 000044
である。これは、式（１６）が、式（１２）と等価な能力を実現できることが、従来の結果から導かれるためである。なお、式（１２）は関数ｆ（ｘ）がａとｇによる内積の形で表示できることを表している。
【０２００】
ここで、上記式（１６）を計算する際には、Ｂｅに入力データｘを代入することにより計算する。
【０２０１】
ここで、Ｂｅに入力データｘを代入した上記式（１６）の計算結果は、決定的に１つの値を持つ訳ではない。式（１６）の右辺が表すように、出力データｙはガウス過程に従うことを意味しているからである。
【０２０２】
すなわち、上記式（１６）の計算結果は、出力データｙがある値である確率が、どの程度あるか、を表す。
【０２０３】
なお、出力データｙを１つの値に定めるようにしてもよい。
【０２０４】
出力データｙを１つに定める典型的な方法としては、例えば、ガウス過程の平均値を用いる方法、つまり、Ｖ(ｘ)をそのまま用いてしまう方法がある。この場合には、式（１０）により、ｘが属するリーフのうちもっとも深いリーフｅに対応するＶｅの値を算出すればよい。
【０２０５】
そして、関数計算部５３０は、出力データｙを、出力部６００に渡す。
【０２０６】
出力部６００は、関数計算部５３０から受け取った出力データｙを出力する。
【０２０７】
＜本発明の実施の形態に係る関数計算装置の作用＞
図１１は、本発明の実施の形態に係る関数計算処理フローを示すフローチャートを示す。
【０２０８】
入力部４００に入力データｘが入力されると、演算部５００において、図１１に示す関数計算処理フローが実行される。
【０２０９】
まず、ステップＳ５００において、関数計算部５３０が、入力部４００に入力された入力データｘを受け取る。
【０２１０】
ステップＳ５１０において、関数計算部５３０は、記憶部５２０から、共分散関数ｃｅと、上記の関数学習装置１０によって学習されたポリア木パラメータ｛Ｙｅ｝、及び階層分割Πとを読み込む。
【０２１１】
ステップＳ５２０において、関数計算部５３０は、ポリア木パラメータ｛Ｙｅ｝、階層分割Π、及び共分散関数ｃｅを用いたニューラルネットワークの関数により、入力データｘに対する出力データｙを計算する。
【０２１２】
ステップＳ５３０において、出力部６００は、出力データｙを出力する。
【０２１３】
以上説明したように、本発明の実施の形態に係る関数計算装置、関数計算方法、及びプログラムによれば、関数計算部が、上記の関数学習装置によって学習された重み関数を用いたニューラルネットワークの関数により、入力データに対する出力データを計算することにより、元の関数が連続的でない場合に対しても、所望の精度で近似した関数を計算することができる。
【０２１４】
なお、本発明は、上述した実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【０２１５】
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能である。
【符号の説明】
【０２１６】
１０   関数学習装置
２０   関数計算装置
１００ 入力部
２００ 演算部
２１０ 点群データ取得部
２１０ 関数学習部
２１２ 初期化部
２１４ ポリア木パラメータ更新部
２１６ 階層分割更新部
２１８ 反復判定部
３００ 出力部
４００ 入力部
５００ 演算部
５２０ 記憶部
５３０ 関数計算部
６００ 出力部
【図１】
2019074890.tif 000045
【図２】
2019074890.tif 000046
【図３】
2019074890.tif 000047
【図４】
2019074890.tif 000048
【図５】
2019074890.tif 000049
【図６】
2019074890.tif 000050
【図７】
2019074890.tif 000051
【図８】
2019074890.tif 000052
【図９】
2019074890.tif 000053
【図１０】
2019074890.tif 000054
【図１１】
2019074890.tif 000055