(57)【要約】【課題】べき乗の計算を比較的簡単な計算に置き換えられるようにする。【解決手段】近似計算装置が、２の実数乗の指数を整数部分と０以上１未満の小数部分とに分離する指数分離部と、前記小数部分について２のべき乗を直線近似で計算する小数部分計算部と、前記整数部分についての２のべき乗の計算結果と、前記小数部分計算部による前記小数部分についての２のべき乗の計算結果とを乗算する乗算部と、を備える。【選択図】図１
2019075003.tif 000002
【特許請求の範囲】
【請求項１】
２の実数乗の指数を整数部分と０以上１未満の小数部分とに分離する指数分離部と、
前記小数部分について２のべき乗を直線近似で計算する小数部分計算部と、
前記整数部分についての２のべき乗の計算結果と、前記小数部分計算部による前記小数部分についての２のべき乗の計算結果とを乗算する乗算部と、
を備える近似計算装置。
【請求項２】
前記整数部分について２のべき乗をシフト演算で計算する整数部分計算部を備える、請求項１に記載の近似計算装置。
【請求項３】
前記小数部分計算部は、前記０以上１未満の区間を分割した区間毎の直線近似にて前記小数部分についての２のべき乗を計算する、請求項１または請求項２に記載の近似計算装置。
【請求項４】
前記小数部分計算部は、前記０以上１未満の区間を分割した区間における２のべき乗の両端を結んだ線分にて前記直線近似を行う、請求項３に記載の近似計算装置。
【請求項５】
ネイピア数の実数乗を２の実数乗に換算する底変換部を備える、請求項１から４のいずれか一項に記載の近似計算装置。
【請求項６】
前記底変換部は、混合ガウスモデルに基づくベイズ識別におけるネイピア数の実数乗を２の実数乗に換算する、請求項５に記載の近似計算装置。
【請求項７】
２の実数乗の指数を整数部分と０以上１未満の小数部分とに分離する指数分離ステップと、
前記小数部分について２のべき乗を直線近似で計算する小数部分計算ステップと、
前記整数部分についての２のべき乗の計算結果と、前記小数部分計算ステップでの前記小数部分についての２のべき乗の計算結果とを乗算する乗算ステップと、
を含む近似計算方法。
【請求項８】
プログラミング可能な装置に
２の実数乗の指数を整数部分と０以上１未満の小数部分とに分離する指数分離ステップと、
前記小数部分について２のべき乗を直線近似で計算する小数部分計算ステップと、
前記整数部分についての２のべき乗の計算結果と、前記小数部分計算ステップでの前記小数部分についての２のべき乗の計算結果とを乗算する乗算ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、近似計算装置、近似計算方法及びプログラム、特に混合ガウスモデルを用いたベイズ識別に好適な近似計算装置、近似計算方法及びプログラムに関する。
【背景技術】
【０００２】
筋電義手やブレインマシンインターフェース等において生体信号のパターン識別が用いられるが、これには混合ガウスモデル（Gaussian Mixture Model；ＧＭＭ）に基づくベイズ識別が有効であることが知られているが、ＧＭＭの演算をリアルタイムで処理しようとすると実装コストが膨大となるという問題がある。
【０００３】
一方、リアルタイム処理においてべき乗の計算を行う場合がある。
例えば、特許文献１には、混合ガウスモデルを適用したニューラルネットワークに生体信号を入力し、電動義手を操作することが記載されている。混合ガウスモデルで事後確率の計算を行う際、指数関数を含む計算を行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３８１６７６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
リアルタイム処理においてべき乗の計算を行う場合、べき乗の計算を高速に行う必要がある。べき乗の計算を比較的簡単な計算に置き換えることができれば、計算の高速化を図ることができ、また、比較的容易に計算のハードウェア実装を行える。
【０００６】
本発明は、べき乗の計算を比較的簡単な計算に置き換えることができる近似計算装置、近似計算方法およびプログラムを提供する。
【課題を解決するための手段】
【０００７】
本発明の第１の態様によれば、近似計算装置は、２の実数乗の指数を整数部分と０以上１未満の小数部分とに分離する指数分離部と、前記小数部分について２のべき乗を直線近似で計算する小数部分計算部と、前記整数部分についての２のべき乗の計算結果と、前記小数部分計算部による前記小数部分についての２のべき乗の計算結果とを乗算する乗算部と、を備える。
【０００８】
前記整数部分について２のべき乗をシフト演算で計算する整数部分計算部を備えるようにしてもよい。
【０００９】
前記小数部分計算部は、前記０以上１未満の区間を分割した区間毎の直線近似にて前記小数部分についての２のべき乗を計算するようにしてもよい。
【００１０】
前記小数部分計算部は、前記０以上１未満の区間を分割した区間における２のべき乗の両端を結んだ線分にて前記直線近似を行うようにしてもよい。
【００１１】
ネイピア数の実数乗を２の実数乗に換算する底変換部を備えるようにしてもよい。
【００１２】
前記底変換部は、混合ガウスモデルに基づくベイズ識別におけるネイピア数の実数乗を２の実数乗に換算するようにしてもよい。
【００１３】
本発明の第２の態様によれば、近似計算方法は、２の実数乗の指数を整数部分と０以上１未満の小数部分とに分離する指数分離ステップと、前記小数部分について２のべき乗を直線近似で計算する小数部分計算ステップと、前記整数部分についての２のべき乗の計算結果と、前記小数部分計算ステップでの前記小数部分についての２のべき乗の計算結果とを乗算する乗算ステップと、を含む。
【００１４】
本発明の第３の態様によれば、プログラムは、プログラミング可能な装置に２の実数乗の指数を整数部分と０以上１未満の小数部分とに分離する指数分離ステップと、前記小数部分について２のべき乗を直線近似で計算する小数部分計算ステップと、前記整数部分についての２のべき乗の計算結果と、前記小数部分計算ステップでの前記小数部分についての２のべき乗の計算結果とを乗算する乗算ステップと、を実行させるためのプログラムである。
【発明の効果】
【００１５】
本発明によれば、べき乗の計算を比較的簡単な計算に置き換えることができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係る近似計算装置の機能構成を示す概略ブロック図である。
【図２】同実施形態における２βの近似の例を示す図である。
【図３】同実施形態の近似ＧＭＭに基づく確率ニューラルネットワークの構成例を示す図である。
【図４】同実施形態に係る近似関数ｇ１（ｚ）を用いた場合の、指数関数の近似誤差率を示す図である。
【図５】同実施形態に係る近似関数ｇ’１（ｚ）を用いた場合の、指数関数の近似誤差率を示す図である。
【図６】同実施形態に係る近似関数ｇ１（ｚ）、ｇ’１（ｚ）それぞれの近似誤差率を示す図である。
【図７】同実施形態に係る近似関数ｇ’１（ｚ）による指数関数の近似の例を示す図である。
【図８】同実施形態に係る近似関数ｇ２（ｚ）を用いた場合の、対数関数の近似誤差率を示す図である。
【図９】同実施形態に係る近似関数ｇ２（（３）Ｏｃ）による対数関数の近似の例を示す図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図１は、本発明の実施形態に係る近似計算装置の機能構成を示す概略ブロック図である。図１に示すように、近似計算装置１０は、底変換部１１と、指数分離部１２と、整数部分計算部１３と、小数部分計算部１４と、乗算部１５とを備える。
【００１８】
近似計算装置１０は、べき乗の近似計算を行う。
底変換部１１は、ネイピア数（ｅ＝２．７１８２８・・・）の実数乗を２の実数乗に換算する。例えば、底変換部１１は、混合ガウスモデル（Gaussian Mixture Model；ＧＭＭ）に基づくベイズ識別におけるネイピア数の実数乗を２の実数乗に換算する。
但し、近似計算装置１０が近似計算を行うべき乗は、底がネイピア数のものに限定されない。例えば、近似計算装置１０が、底が１０のべき乗の入力を受け、底変換部１１が、底が１０のべき乗を底が２のべき乗に換算するようにしてもよい。あるいは、近似計算装置１０が、底が元々２であるべき乗の入力を受けて近似計算を行うようにしてもよい。
【００１９】
指数分離部１２は、２の実数乗の指数を整数部分と０以上１未満の小数部分とに分離する。
整数部分計算部１３は、指数の整数部分について２のべき乗をシフト演算（ビットシフト）で計算する。
小数部分計算部１４は、指数の小数部分について２のべき乗を直線近似で計算する。
小数部分計算部１４が、０以上１未満の区間を分割した区間毎の直線近似にて、指数の小数部分についての２のべき乗を計算するようにしてもよい。さらには、小数部分計算部１４が、０以上１未満の区間を分割した区間における２のべき乗の両端を結んだ線分にて直線近似を行うようにしてもよい。
【００２０】
乗算部１５は、整数部分計算部１３による指数の整数部分についての２のべき乗の計算結果と、小数部分計算部１４による小数部分についての２のべき乗の計算結果とを乗算する。
これにより、近似計算装置１０は、べき乗の計算を四則演算およびシフト演算といった比較的簡単な計算に置き換えることができる。
近似計算装置１０が行うべき乗の近似計算について、式を参照して説明する。
【００２１】
混合ガウスモデルにおいて、特徴ベクトルｘをＤ次元の実数ベクトルとすると、特徴ベクトルｘの生起確率密度関数ｆ（ｘ）は、式（１）のように示される。
【００２２】
【数１】
2019075003.tif 000003
【００２３】
ここで、ｃ（ｃは、１≦ｃ≦Ｃの正整数）は、各クラスを識別する識別番号であり、Ｃはクラス数を示す。ｍ（ｍは、１≦ｍ≦Ｍｃの正整数）は、クラスｃを構成するコンポーネントを識別する識別番号であり、Ｍｃは、クラスｃを構成するコンポーネントの数を示す。混合ガウスモデルでは、正規分布（ガウス分布）の重ね合わせによってクラスが構成されており、ここでいうコンポーネントは、クラスを構成する正規分布である。
また、μｃ，ｍ、Σｃ，ｍ、γｃ，ｍ（０≦γｃ，ｍ≦１）は、それぞれ、クラスｃのコンポーネントｍの平均ベクトル、分散共分散行列、他のコンポーネントとの混合比を示す。全てのクラスｃの全てのコンポーネントｍの混合比γｃ，ｍの合計は１、すなわち、式（２）を満たすものとする。
【００２４】
【数２】
2019075003.tif 000004
【００２５】
また、正規分布Ｍ（ｘ；μｃ，ｍ，Σｃ，ｍ）は、式（３）のように示される。
【００２６】
【数３】
2019075003.tif 000005
【００２７】
ここで、指数関数ｅｘｐは、ネイピア数ｅのべき乗を示す。Ｄは、上記のように特徴ベクトルの次元数を示す。
指数ｚｃ，ｍは、式（４）のように示される。
【００２８】
【数４】
2019075003.tif 000006
【００２９】
ここでは、上付きの「Ｔ」は、行列またはベクトルの転置を示す。上付きの「−１」は逆行列を示す。
特徴ベクトルｘをクラスに分類する際の、クラスｃのコンポーネントｍに対する事後確率は式（５）のように示される。
【００３０】
【数５】
2019075003.tif 000007
【００３１】
正規分布を指数関数を用いて表記すると、式（５）は式（６）のように示される。
【００３２】
【数６】
2019075003.tif 000008
【００３３】
式（６）における指数関数ｅｘｐの定義域は［−∞，０］と広く、これら指数関数の演算に時間を要することが考えられる。
そこで、指数関数を高速かつ高精度に演算できる近似式を構築する。特に、ハードウェア実装を考慮して近似式を構築する。
まず、指数関数ｅｘｐを２のべき乗で表現すると式（７）のように示される。
【００３４】
【数７】
2019075003.tif 000009
【００３５】
ここで、ｋは式８のように示される定数である。
【００３６】
【数８】
2019075003.tif 000010
【００３７】
式（７）を用いた指数関数ｅｘｐから２のべき乗への換算は、底変換部１１が行う処理の例に該当する。
式（７）のｚｋを整数部分と小数部分とに分けると、式（９）のように示される。
【００３８】
【数９】
2019075003.tif 000011
【００３９】
ここで、αはｚｋの整数部分であり、式（１０）のように示される。
【００４０】
【数１０】
2019075003.tif 000012
【００４１】
関数ｆｌｏｏｒは、整数への切り捨てを示す。具体的には関数ｆｌｏｏｒは、引数を超えない最大の整数を示す。
式（９）のβはｚｋの小数部分であり、式（１１）のように示される。
【００４２】
【数１１】
2019075003.tif 000013
【００４３】
βの定義域は［０，１）、すなわち０≦β＜１である。指数ｚｋを整数部分αと小数部分βとに分離する処理は、指数分離部１２の処理の例に該当する。
ここで、βの定義域を等間隔にｎ分割して、区間毎に２βをテイラー展開に基づいて線形近似する。２次以上の項を無視できると仮定すると、ｔの周りにおける２βのテイラー展開は、式（１２）のように示される。
【００４４】
【数１２】
2019075003.tif 000014
【００４５】
また、βの定義域［０，１）を等間隔にｎ分割した各区間は、式（１３）のように示される。
【００４６】
【数１３】
2019075003.tif 000015
【００４７】
すなわち、（ｌ−１）／ｎ≦β＜ｌ／ｎであり、ｌは、１≦ｌ≦ｎの正整数である。
各区間の中間点をtn,lとすると、式（１４）のように示される。
【００４８】
【数１４】
2019075003.tif 000016
【００４９】
中間点tn,lの周りにおける２βのテイラー展開は、式（１５）のように示される。
【００５０】
【数１５】
2019075003.tif 000017
【００５１】
式（１５）は、式（１６）のように示すことができる。
【００５２】
【数１６】
2019075003.tif 000018
【００５３】
ここで、ａｎ，ｌは、式（１７）のように示される。
【００５４】
【数１７】
2019075003.tif 000019
【００５５】
また、ｂｎ，ｌは、式（１８）のように示される。式（１６）はβの一次関数であり、βを直線近似する。
【００５６】
【数１８】
2019075003.tif 000020
【００５７】
式（１６）による２βの近似を用いて、ｅｘｐ（ｚ）を式（１９）のように近似できる。
【００５８】
【数１９】
2019075003.tif 000021
【００５９】
さらに、係数ａｎ，ｌおよびｂｎ，ｌを簡単化する。
式（１７）に式（１４）を代入すると、係数ａｎ，ｌは式（２０）のように示される。
【００６０】
【数２０】
2019075003.tif 000022
【００６１】
また、式（１８）に式（１４）を代入すると、係数ｂｎ，ｌは式（２１）のように示される。
【００６２】
【数２１】
2019075003.tif 000023
【００６３】
式（２０）および式（２１）の「（２ｌ−１）／２ｎ」（＝ｔｎ，ｌ）、および、２の自然対数「ｌｎ２」を近似式で置き換える。
ｎの値を大きくしていくと、（２ｌ−１）／２ｎは、１／ｎに収束する。これは、式（２２）のように示される。
【００６４】
【数２２】
2019075003.tif 000024
【００６５】
また、ｎの値を大きくしていくと、（１−２−１／ｎ）ｎは、ｌｎ２に収束する。これは式（２３）のように示される。
【００６６】
【数２３】
2019075003.tif 000025
【００６７】
式（２２）に基づき、係数ａｎ，ｌおよびｂｎ，ｌの（２ｌ−１）／２ｎを１／ｎに置き換える。また、式（２３）に基づき、係数ａｎ，ｌおよびｂｎ，ｌのｌｎ２を（１−２−１／ｎ）ｎに置き換える。
係数ａｎ，ｌから置き換え後の係数ａ’ｎ，ｌは、式（２４）のように示される。
【００６８】
【数２４】
2019075003.tif 000026
【００６９】
係数ｂｎ，ｌから置き換え後の係数ｂ’ｎ，ｌは、式（２５）のように示される。
【００７０】
【数２５】
2019075003.tif 000027
【００７１】
式（１６）の係数ａｎ，ｌおよびｂｎ，ｌを係数ａ’ｎ，ｌおよびｂ’ｎ，ｌで置き換えて、２βの近似は式（２６）のように示される。
【００７２】
【数２６】
2019075003.tif 000028
【００７３】
式（２６）は、２βの示す曲線をｎ分割した各区間の曲線を、両端を結んだ直線で近似している。
図２は、式（２６）による２βの近似の例を示す図である。図２は、２βの定義域を２分割する場合の例を示している。図２のグラフの横軸はβの値を示し、縦軸は２βの値を示す。
【００７４】
線Ｌ１１は、２βを示す。点Ｐ１１、Ｐ１２、Ｐ１３は、それぞれ、βの定義域を分割した区間の端部と線Ｌ１１との交点を示す。点Ｐ１１は、β＝０の直線と線Ｌ１１との交点を示す。点Ｐ１２は、β＝０．５の直線と線Ｌ１１との交点を示す。点Ｐ１３は、β＝１の直線と線Ｌ１１との交点を示す。
線Ｌ１２ａ、線Ｌ１２ｂは、それぞれβの区間［０，０．５）、［０．５，１）にて線Ｌ１１を近似する。線Ｌ１２ａは、点Ｐ１１と点Ｐ１２とを結んだ直線（線分）である。線Ｌ１２ｂは、点Ｐ１２と点Ｐ１３とを結んだ直線（線分）である。
このように、式（２６）によれば、直感的に把握しやすい態様でβ２を近似することができる。
【００７５】
式（２６）による近似を指数関数ｅｘｐの近似に適用する。具体的には、式（１９）の係数ａｎ，ｌおよびｂｎ，ｌを係数ａ’ｎ，ｌおよびｂ’ｎ，ｌで置き換えて、指数関数ｅｘｐの近似は式（２７）のように示される。
【００７６】
【数２７】
2019075003.tif 000029
【００７７】
式（２７）における２αは、二進数表現におけるシフト演算（ビットシフト）で演算できる。また、ａ’ｎ，ｌβ＋ｂ’ｎ，ｌは、βの一次関数である。このように、式（２７）によれば、指数関数ｅｘｐをシフト演算と線形方程式で近似することができる。簡単な処理で演算を行える点で、式（２７）によれば、指数関数ｅｘｐの演算を高速化することができる。特に式（２７）は、シフト演算を用いる点、および、一次関数といった簡単な関数を用いる点でハードウェア実装が容易である。式（２７）をハードウェア実装することで、指数関数ｅｘｐの演算を高速化することができる。
式（２７）の「２α」の計算は、整数部分計算部１３の処理の例に該当する。式（２７）の「ａ’ｎ，ｌβ＋ｂｎ，ｌ」の計算は、小数部分計算部１４の処理の例に該当する。これらの計算結果の乗算は、乗算部１５の処理の例に該当する。
【００７８】
次に、指数関数ｅｘｐの近似を混合ガウスモデルに適用する。
正規分布を示す式（３）に式（２７）の近似を導入して、正規分布は式（２８）のように近似される。
【００７９】
【数２８】
2019075003.tif 000030
【００８０】
ここで、Ａｎは実数定数であり、式（２９）のように示される。
【００８１】
【数２９】
2019075003.tif 000031
【００８２】
式（２８）に示す正規分布の近似Ｍａｐｐ（ｘ；μｃ，ｍ，Σｃ，ｍ）を近似ガウス分布（または近似正規分布）と称する。
近似ガウス分布Ｍａｐｐ（ｘ；μｃ，ｍ，Σｃ，ｍ）について、式（３０）が成り立つ。
【００８３】
【数３０】
2019075003.tif 000032
【００８４】
また、近似ガウス分布Ｍａｐｐ（ｘ；μｃ，ｍ，Σｃ，ｍ）について、式（３１）が成り立つ。
【００８５】
【数３１】
2019075003.tif 000033
【００８６】
式（３０）および式（３１）より、近似ガウス分布Ｍａｐｐ（ｘ；μｃ，ｍ，Σｃ，ｍ）は確率密度関数である。
近似ガウス分布Ｍａｐｐ（ｘ；μｃ，ｍ，Σｃ，ｍ）を式（１）に適用すると式（３２）のようになる。
【００８７】
【数３２】
2019075003.tif 000034
【００８８】
ｆａｐｐ（ｘ）は、混合ガウスモデルの生起確率密度関数ｆ（ｘ）を模擬する。ｆａｐｐ（ｘ）を用いての混合ガウスモデルの模擬を、近似混合ガウスモデル（近似ＧＭＭ）と称する。
式（２６）の近似を式（５）に適用して、近似ＧＭＭに基づいたベイズ推定におけるクラスｃのコンポーネントｍに対する事後確率ｐａｐｐ（ｃ，ｍ｜ｘ）は、式（３３）のように示される。
【００８９】
【数３３】
2019075003.tif 000035
【００９０】
α、βのいずれもクラスｃおよびコンポーネントｍ毎に値をとるため、添え字ｃおよびｍ、あるいは、ｃ’およびｍ’を付している。
このように、近似ＧＭＭによれば、指数関数を用いずにＧＭＭに基づくベイズ推定を近似可能であり、この点で演算を高速化することができる。
【００９１】
次に、近似ＧＭＭのニューラルネットワークへの適用について説明する。以下、近似ＧＭＭを適用したニューラルネットワークを、近似ＧＭＭに基づく確率ニューラルネットワークと称する。
式（５）を、平均ベクトルμｃ，ｍおよび共分散逆行列Σｃ，ｍ−１を用いて展開すると、式（３４）のように、新たな入力ベクトルＸと、η（ｃ，ｍ）とを用いて指数関数の引数を見かけ上線形化できる。
【００９２】
【数３４】
2019075003.tif 000036
【００９３】
ここで、新たな入力ベクトルＸは、式（３５）のように示される。
【００９４】
【数３５】
2019075003.tif 000037
【００９５】
すなわち、新たな入力ベクトルＸは、元の入力ベクトルｘの要素ｘ１，・・・，ｘＤのうち２つ以下の要素の積を要素としている。
また、η（ｃ，ｍ）は、式（３６）のように示される。
【００９６】
【数３６】
2019075003.tif 000038
【００９７】
ここで、ｓｉ，ｊ（ｃ，ｍ）は、共分散逆行列Σｃ，ｍ−１の要素であり、式（３７）のように示される。
【００９８】
【数３７】
2019075003.tif 000039
【００９９】
また、η０（ｃ，ｍ）は、式（３８）のように示される。
【０１００】
【数３８】
2019075003.tif 000040
【０１０１】
δｉｊはクロネッカーのデルタ（Kronecker Delta）であり、式（３９）のように示される。
【０１０２】
【数３９】
2019075003.tif 000041
【０１０３】
式（３４）に式（２４）、式（２５）および式（２７）を適用すると、式（４０）のように示される。
【０１０４】
【数４０】
2019075003.tif 000042
【０１０５】
式（４０）のαｃ，ｍは式（４１）のように示すことができる。
【０１０６】
【数４１】
2019075003.tif 000043
【０１０７】
式（４０）のβｃ，ｍは式（４２）のように示すことができる。
【０１０８】
【数４２】
2019075003.tif 000044
【０１０９】
式（６）に示されるようにｋ＝ｌｏｇ２ｅであり、このｋを用いて新たなパラメータのベクトルｗ（ｃ，ｍ）を式（４３）のようにおくことができる。
【０１１０】
【数４３】
2019075003.tif 000045
【０１１１】
式（４０）を式（３４）と比較すると、ＧＭＭのパラメータμｃ，ｍ、Σｃ，ｍおよびγｃ，ｍを、無制約のベクトルｗ（ｃ，ｍ）で表現可能である。
ベクトルｗ（ｃ，ｍ）の値を適切に獲得することができれば、入力ベクトルｘを非線形変換した新たな入力ベクトルＸとベクトルｗ（ｃ，ｍ）との積を求め、係数を用いた線形方程式およびビットシフトにてベイズ推定の演算を実行できる。そこで、ベクトルｗ（ｃ，ｍ）をニューラルネットワークの重みとして、ｗ（ｃ，ｍ）の値を機械学習によって決定する。
【０１１２】
図３は、近似ＧＭＭに基づく確率ニューラルネットワークの構成例を示す図である。図３に示す構成で、ニューラルネットワーク２０は、非線形変換部２１と、第１層２２と、第２層２３と、第３層２４とを備える。
非線形変換部２１は、式（３５）に示されるように、入力ベクトルｘ＝［ｘ１，ｘ２，・・・，ｘＤ］Ｔを新たな入力ベクトルＸに変換する。ここで、新たな入力ベクトルＸの要素数をＨとし、Ｘ＝［Ｘ１，Ｘ２，・・・，ＸＨ］Ｔとも表記する。Ｈ＝１＋（Ｄ＋３）／２である。
【０１１３】
第１層２２は、新たな入力ベクトルＸの要素数Ｈと同数のノード２２−１〜２２−Ｈを備える。第１層のノード２２−ｈ（ｈは、１≦ｈ≦Ｈの整数）は、入力されるＸｈを、第２層２３の各ノードへ出力する。ノード２２−ｈへの入力を（１）Ｉｈとし、ノード２２−ｈからの出力を（１）Ｏｈとすると、式（４４）のように示される。
【０１１４】
【数４４】
2019075003.tif 000046
【０１１５】
第２層２３は、近似ＧＭＭにおける全クラスの全コンポーネントと同数のノード２３−１，１、・・・、２３−１，Ｍ１、・・・、２３−ｃ，ｍ、・・・、２３−Ｃ，ＭＣを備える。
第１層２２の全ノードから第２層２３の全ノードへ経路（Path）が設けられ、経路毎に重みが設定される。第１層２２のノードからの出力に重みが乗算されて第２層２３のノードに入力され、第２層のノードは、第１層からの出力の重み付け合計の入力を受ける。第１層２２のノード２２−ｈから第２層２３のノード２３−ｃ，ｍへの経路の重みをｗｈｃ，ｍとすると、ノード２３−ｃ，ｍへの入力（２）Ｉｃ，ｍは、式（４５）のように示される。
【０１１６】
【数４５】
2019075003.tif 000047
【０１１７】
第２層２３の各ノードは、式（４０）の演算を行って、クラス毎かつコンポーネント毎の事後確率を算出し出力する。ノード２３−ｃ，ｍからの出力（２）Ｏｃ，ｍは、式（４６）のように示される。
【０１１８】
【数４６】
2019075003.tif 000048
【０１１９】
式（４６）に示されるように、第２層２３の各ノードが行う計算は、近似計算装置１０が行うべき乗の近似計算を含む。この点で、第２層２３の各ノードは近似計算装置１０の例に該当する。
第３層２４は、クラスの数Ｃと同数のノード２４−１〜２４−Ｃを備える。
第２層２３の各ノードは、自らが対応するクラスに応じて、第３層２４の各ノードのうち当該クラスに対応するノードへデータ（値）を出力する。第２層のノード２３−ｃ，ｍは、第３層２４のノード２４−ｃへ出力を行う。第３層２４の各ノードは、第２層のノードからの出力の合計の入力を受け、当該合計を出力する。
第３層２４のノード２４−ｃへの入力を（３）Ｉｃとし、ノード２４−ｃからの出力を（３）Ｏｃとすると、式（４７）のように示される。
【０１２０】
【数４７】
2019075003.tif 000049
【０１２１】
次に、ニューラルネットワーク２０における学習則について説明する。ニューラルネットワーク２０は、重みｗｈｃ，ｍの値を学習する。
学習用データとしてＮ個の入力ベクトルｘ（ｎ）（ｎは、１≦ｎ≦Ｎの正整数）と、式（４８）に示される教師信号ベクトルＴ（ｎ）とが与えられた場合を考える。
【０１２２】
【数４８】
2019075003.tif 000050
【０１２３】
カルバック・ライブラー情報量（Kullback-Leibler Divergence）を最小化することでＧＭＭのパラメータを学習的に獲得できるとの前提に基づき、ニューラルネットワーク２０の評価関数を式（４９）のように定義する。
【０１２４】
【数４９】
2019075003.tif 000051
【０１２５】
ニューラルネットワーク２０は、式（４９）のＪを小さくするように学習を行う。
重みｗｈｃ，ｍの修正量をΔｗｈｃ，ｍとし、学習率をμとすると、一括学習法によって修正量Δｗｈｃ，ｍは、式（５０）のように示される。
【０１２６】
【数５０】
2019075003.tif 000052
【０１２７】
式（５０）の（∂Ｊｎ）／（∂ｗｈｃ，ｍ）は、式（５１）のように表される。
【０１２８】
【数５１】
2019075003.tif 000053
【０１２９】
ここで、Ｘｈ（ｎ）は、入力ベクトルｘ（ｎ）から得られる新たな入力ベクトルである。
式（５０）および式（５１）は、単純な四則演算で計算可能であり、この点で高速に演算可能である。
また、式（４９）のｌｏｇ２（３）Ｏｃを高速に演算できるよう近似を行う。ｌｏｇ２（３）Ｏｃは、式（５２）のように変形できる。
【０１３０】
【数５２】
2019075003.tif 000054
【０１３１】
ここで、ｍｃ、ｎｃはいずれも整数であり、１≦ｍｃ＜２である。
指数関数ｅｘｐの近似の場合と同様、ｍｃの定義域［１，２）をｎ分割し、ｌｏｇ２ｍｃを近似する。ｍｃの定義域を等間隔にｎ分割した区間は、式（５３）のように示される。
【０１３２】
【数５３】
2019075003.tif 000055
【０１３３】
この区間におけるｌｏｇ２ｍｃ上の両端の点は、式（５４）のように示される。
【０１３４】
【数５４】
2019075003.tif 000056
【０１３５】
式（５４）に示される両端の点を結ぶ直線（線分）ｇ’’ｎ，ｌによって、ｌｏｇ２ｍｃは式（５５）のように近似される。
【０１３６】
【数５５】
2019075003.tif 000057
【０１３７】
ここで、ｃｎ，ｌは、式（５６）のように示される。
【０１３８】
【数５６】
2019075003.tif 000058
【０１３９】
ｄｎ，ｌは、式（５７）のように示される。
【０１４０】
【数５７】
2019075003.tif 000059
【０１４１】
さらに、ｎ＝１、ｌ＝１とした場合、ｃｎ，ｌ＝１、ｄｎ，ｌ＝−１となり、ｌｏｇ２ｍｃを式（５８）のように線形近似可能である。
【０１４２】
【数５８】
2019075003.tif 000060
【０１４３】
この場合、式（５２）は、式（５９）のように示される。
【０１４４】
【数５９】
2019075003.tif 000061
【０１４５】
また、式（４９）は、式（６０）のように示される。
【０１４６】
【数６０】
2019075003.tif 000062
【０１４７】
式（５０）の学習率μは、式（６１）に基づいて学習サイクル毎に更新することが考えられる。
【０１４８】
【数６１】
2019075003.tif 000063
【０１４９】
ここで、学習の収束時間の上限設定値をｔｆとすると、μｋは式（６２）のように示される。
【０１５０】
【数６２】
2019075003.tif 000064
【０１５１】
λは０＜λ＜１を満たす任意の定数である。ここで、λ＝０．５とすると、μｋは式（６３）のように示される。
【０１５２】
【数６３】
2019075003.tif 000065
【０１５３】
関数ｈ（Ｊ）＝√Ｊをｔの周りでテイラー展開して第２項まで線形近似を行うと、式６４のように示される。
【０１５４】
【数６４】
2019075003.tif 000066
【０１５５】
ここで、ｔ＝１とすると式（６５）のように示される。
【０１５６】
【数６５】
2019075003.tif 000067
【０１５７】
式（６５）は、Ｊ＝１における接線であり、Ｊ＝１の近傍でのみ近似が成り立つ。近似の精度をより高めるために、式（６５）を式（６６）のように変形する。
【０１５８】
【数６６】
2019075003.tif 000068
【０１５９】
ここで、０．５≦Ｊ’≦２である。また、ｑは自然数のベクトルである。
このように、比較的簡単な計算にて学習を実現可能である。
次に、上述した近似の精度について検討する。
式（１９）に示される、指数関数の近似関数ｇ１（ｚ）＝２α（ａｎ，ｌβ＋ｂｎ，ｌ）の、指数関数ｅｘｐ＝ｆ１（ｚ）に対する誤差率Ｅ１を式（６７）のように定義する。
【０１６０】
【数６７】
2019075003.tif 000069
【０１６１】
また、式（１９）に示される、指数関数ｅｘｐの近似関数ｇ’１（ｚ）＝２α（ａｎ，ｌβ＋ｂｎ，ｌ）の、指数関数ｅｘｐ＝ｆ１（ｚ）に対する誤差率Ｅ’１を式（６８）のように定義する。
【０１６２】
【数６８】
2019075003.tif 000070
【０１６３】
図４は、近似関数ｇ１（ｚ）を用いた場合の、指数関数の近似誤差率を示す図である。図４のグラフの横軸はｚの値を示し、縦軸は近似誤差率を示す。
線Ｌ２１は、分割数ｎ＝１の場合の近似誤差率を示す。線Ｌ２２は、分割数ｎ＝２の場合の近似誤差率を示す。線Ｌ２３は、分割数ｎ＝４の場合の近似誤差率を示す。
図４に示すように、分割数ｎが増加すると近似誤差率は小さくなる。近似誤差率が最も大きい分割数ｎ＝１の場合でも、近似誤差率の最大値は７．５９％であり、比較的高精度に近似できている。
【０１６４】
図５は、近似関数ｇ’１（ｚ）を用いた場合の、指数関数の近似誤差率を示す図である。図５のグラフの横軸はｚの値を示し、縦軸は近似誤差率を示す。
線Ｌ３１は、分割数ｎ＝１の場合の近似誤差率を示す。線Ｌ３２は、分割数ｎ＝２の場合の近似誤差率を示す。線Ｌ３３は、分割数ｎ＝４の場合の近似誤差率を示す。
図５に示すように、分割数ｎが増加すると近似誤差率は小さくなる。近似誤差率が最も大きい分割数ｎ＝１の場合でも、近似誤差率の最大値は６．１５％であり、比較的高精度に近似できている。
【０１６５】
図６は、近似関数ｇ１（ｚ）、ｇ’１（ｚ）それぞれの近似誤差率を示す図である。図６では、近似関数ｇ１（ｚ）、ｇ’１（ｚ）それぞれについて、分割数ｎ＝１、２、４それぞれの場合の近似誤差率の平均値および最大値を示している。図６を参照すると、近似関数ｇ’１（ｚ）では、近似関数ｇ１（ｚ）よりも近似誤差率の平均値が大きくなっているものの、最大値は小さくなっている。もっとも、近似関数ｇ１（ｚ）とｇ’１（ｚ）との近似誤差率の相違は１％程度と比較的小さい値である。
【０１６６】
図７は、近似関数ｇ’１（ｚ）による指数関数の近似の例を示す図である。図７は、分割数ｎ＝１の場合の例を示している。図７のグラフの横軸はｚを示し、縦軸はｅｘｐ（ｚ）を示す。
線Ｌ４１は、指数関数ｅｘｐ（ｚ）の実際値を示す。線Ｌ４２は、近似関数ｇ’１（ｚ）による近似値を示す。
図７に示されるように、近似関数ｇ’１（ｚ）によって指数関数ｅｘｐ（ｚ）を近似できている。
【０１６７】
次に、対数関数の近似精度について検討する。
式（５９）に示される対数関数の近似関数ｇ２（（３）Ｏｃ）＝ｍｃ＋ｎｃ−１の、対数関数ｆ２（（３）Ｏｃ）＝ｌｏｇ２（３）Ｏｃに対する近似誤差率を式（６９）のように定義する。
【０１６８】
【数６９】
2019075003.tif 000071
【０１６９】
図８は、近似関数ｇ２（ｚ）を用いた場合の、対数関数の近似誤差率を示す図である。図８のグラフの横軸は（３）Ｏｃの値を示し、縦軸は近似誤差率を示す。
線Ｌ５１は、分割数ｎ＝１の場合の近似誤差率を示す。線Ｌ５２は、分割数ｎ＝２の場合の近似誤差率を示す。線Ｌ５３は、分割数ｎ＝４の場合の近似誤差率を示す。
指数関数の近似の場合と同様、対数関数の近似の場合も分割数ｎが増加すると近似誤差率は小さくなる。
（３）Ｏｃが１に近付くとｌｏｇ２（３）Ｏｃが０に近付くため、近似誤差率は次第に大きくなる。見かけ上の近似誤差率が大きくなるものの、近似誤差ｆ２（（３）Ｏｃ）−ｇ２（（３）Ｏｃ）が最も大きい分割数ｎ＝１の場合でも、近似誤差は平均で０．０５８±０．０２６であり、比較的高精度に近似できている。
【０１７０】
図９は、近似関数ｇ２（（３）Ｏｃ）による対数関数の近似の例を示す図である。図９は、分割数ｎ＝１の場合の例を示している。図９のグラフの横軸は（３）Ｏｃを示し、縦軸はｌｏｇ２（３）Ｏｃを示す。
線Ｌ６１は、対数関数ｌｏｇ２（３）Ｏｃの実際値を示す。線Ｌ６２は、近似関数ｇ２（（３）Ｏｃ）による近似値を示す。
図９に示されるように、近似関数ｇ２（（３）Ｏｃ）によって対数関数ｅｘｐ（ｌｏｇ２（３）Ｏｃ）を近似できている。
【０１７１】
次に、近似混合ガウスモデルに基づくクラス識別の実験結果について説明する。図３に示すニューラルネットワークをＦＰＧＡ（Field-programmable Gate Array）に実装してクラス識別および学習の実験を行った。
ハードウェア上では、以下の流れで指数関数の演算を行った。
１−１．  （２）Ｉｃ，ｍの整数値をαｃ，ｍとし、小数値をβｃ，ｍとする。
１−２．  βｃ，ｍに１を加え、αｃ，ｍビット左シフトする。
【０１７２】
また、対数関数の演算は、以下のように行った。
２−１．  （３）Ｏｃ≦１のとき２−２．へ進む。（３）Ｏｃ＞１のとき２−３．へ進む。
２−２．  （３）Ｏｃを２倍（１ビット左シフト）し、２−１．へ戻る。
２−３．  ２−２．で２倍した回数（１ビット左シフトした回数）をｎｃとし、式（５９）の演算を行う。
【０１７３】
平方根関数は、以下のように計算可能である。
３−１．  Ｊ＞２のとき３−２．に進む。Ｊ≦２のとき、３−３．に進む。
３−２．  Ｊを１／４倍（２ビット右シフト）し、３−１．へ戻る。
３−３．  ３−２．で１／４倍した回数（２ビット右シフトした回数）をｑとして、式（６６）の演算を行う。
以上より、ハードウェア上で指数関数、対数関数、平方根関数の各演算をシフト演算および加減算にて実行可能である。
【０１７４】
実験の比較対象として、上記の近似を行わない混合ガウスモデルによるニューラルネットワークをソフトウェアで構築した。ソフトウェアによるニューラルネットワークの構築は、ＣＰＵクロック周波数３．４０ギガヘルツ（ＧＨｚ）、ＲＡＭ（Random Access Memory）１６．０ギガバイト（ＧＢ）のコンピュータおよびＣ言語を用いて行った。
以下では、近似混合ガウスモデルによるニューラルネットワークのＦＰＧＡを用いた構成を近似ＧＭＭハード構成と称する。また、近似を行わない混合ガウスモデルによるニューラルネットワークのソフトウェアによる構成をＧＭＭソフト構成と称する。
【０１７５】
クラスの識別率については、ＧＭＭソフト構成、近似ＧＭＭハード構成共に約９９と高い識別率を示し、有意差は認められなかった。
学習時間については、ＧＭＭソフト構成が６．４３秒であったのに対し、近似ＧＭＭハード構成では８．４７ミリ秒と、おおよそ８００分の１の時間に短縮された。
上記のように、指数関数、対数関数、平方根関数の各演算をシフト演算および加減算にて実行可能であり、この点で、ハードウェア実装が容易である。ハードウェア実装および計算の簡単化により、上記のように学習時間が大幅に短縮された。
【０１７６】
以上のように、指数分離部１２は、２の実数乗の指数を整数部分と０以上１未満の小数部分とに分離する。小数部分計算部１４は、指数の小数部分について２のべき乗を直線近似で計算する。乗算部１５は、整数部分についての２のべき乗の計算結果と、小数部分計算部１４による小数部分についての２のべき乗の計算結果とを乗算する。
これにより、近似計算装置１０では、指数の小数部分についての２のべき乗を簡単な線形演算に置き換えることができる。この点で、近似計算装置１０によれば、ハードウェア実装が容易であり、ハードウェア実装および演算の簡単化による演算時間の短縮が見込まれる。
【０１７７】
また、整数部分計算部１３は、指数の整数部分について２のべき乗をシフト演算で計算する。
近似計算装置１０によれば、指数の整数部分について２のべき乗をシフト演算で行う点で、ハードウェア実装が容易であり、ハードウェア実装および演算の簡単化による演算時間の短縮が見込まれる。
【０１７８】
また、小数部分計算部１４は、０以上１未満の区間を分割した区間毎の直線近似にて指数の小数部分についての２のべき乗を計算する。
これにより、近似計算装置１０では、特に高い演算精度を要求される場合は分割数を多くして近似の精度を高めることができる。かつ、区間毎の直線近似にて、指数の小数部分についての２のべき乗を簡単な線形演算に置き換えることができる。この点で、近似計算装置１０によれば、ハードウェア実装が容易であり、ハードウェア実装および演算の簡単化による演算時間の短縮が見込まれる。
【０１７９】
また、小数部分計算部１４は、０以上１未満の区間を分割した区間における２のべき乗の両端を結んだ線分にて直線近似を行う。
これにより、近似計算装置１０では、指数の小数部分についての２のべき乗を、より簡単な線形演算に置き換えることができる。この点で、近似計算装置１０によれば、ハードウェア実装が容易であり、ハードウェア実装および演算の簡単化による演算時間の短縮が見込まれる。
【０１８０】
また、底変換部１１は、ネイピア数の実数乗を２の実数乗に換算する。
これにより、近似計算装置１０では、ネイピア数を底とする指数関数を、より簡単な演算に置き換えることができる。
【０１８１】
また、底変換部１１は、混合ガウスモデルに基づくベイズ識別におけるネイピア数の実数乗を２の実数乗に換算する。
近似計算装置１０によれば、混合ガウスモデルを近似する近似混合ガウスモデルを用いることができる。近似混合ガウスモデルは、混合ガウスモデルと比較して、より簡単な演算で実装可能である。この点で、近似計算装置１０によれば近似混合ガウスモデルのハードウェア実装が容易であり、ハードウェア実装および演算の簡単化による演算時間の短縮が見込まれる。
【０１８２】
なお、近似計算装置１０が行う演算及び制御の全部または一部の機能を実現するためのプログラムを、コンピュータまたはハードウェアが読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムまたはハードウェアに読み込ませ、実行することで各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【０１８３】
以上、本発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【０１８４】
１０  近似計算装置
１１  底変換部
１２  指数分離部
１３  整数部分計算部
１４  小数部分計算部
１５  乗算部
２０  ニューラルネットワーク
２１  非線形変換部
２２  第１層
２３  第２層
２４  第３層
【図１】
2019075003.tif 000072
【図２】
2019075003.tif 000073
【図３】
2019075003.tif 000074
【図４】
2019075003.tif 000075
【図５】
2019075003.tif 000076
【図６】
2019075003.tif 000077
【図７】
2019075003.tif 000078
【図８】
2019075003.tif 000079
【図９】
2019075003.tif 000080