<内燃機関の全体構成>
まず初めに、本発明による機械学習装置を内燃機関に適用した場合について説明する。内燃機関の全体図を示す図1を参照すると、1は機関本体、2は各気筒の燃焼室、3は各気筒の燃焼室2内に配置された点火栓、4は各気筒に燃料、例えば、ガソリンを供給するための燃料噴射弁、5はサージタンク、6は吸気枝管、7は排気マニホルドを夫々示す。サージタンク5は吸気ダクト8を介して排気ターボチャージャ9のコンプレッサ9aの出口に連結され、コンプレッサ9aの入口は吸入空気量検出器10を介してエアクリーナ11に連結される。吸気ダクト8内にはアクチュエータ13により駆動されるスロットル弁12が配置され、スロットル弁12にはスロットル弁開度を検出するためのスロットル弁開度センサ14が取り付けられている。また、吸気ダクト8周りには吸気ダクト8内を流れる吸入空気を冷却するためのインタクーラ15が配置される。
一方、排気マニホルド7は排気ターボチャージャ9の排気タービン9bの入口に連結され、排気タービン9bの出口は排気管16を介して排気浄化用触媒コンバータ17に連結される。排気マニホルド7とサージタンク5とは排気ガス再循環(以下、EGRと称す)通路18を介して互いに連結され、EGR通路18内にはEGR制御弁19が配置される。各燃料噴射弁4は燃料分配管20に連結され、この燃料分配管20は燃料ポンプ21を介して燃料タンク22に連結される。排気管16内には排気ガス中のNOX濃度を検出するためのNOXセンサ23が配置されている。また、エアクリーナ11内には大気温を検出するための大気温センサ24が配置されている。
電子制御ユニット30はデジタルコンピュータからなり、双方向性バス31によって互いに接続されたROM(リードオンリメモリ)32、RAM(ランダムアクセスメモリ)33、CPU(マイクロプロセッサ)34、入力ポート35および出力ポート36を具備する。入力ポート35には、吸入空気量検出器10、スロットル弁開度センサ14、NOXセンサ23および大気温センサ24の出力信号が、対応するAD変換器37を介して入力される。アクセルペダル40にはアクセルペダル40の踏込み量に比例した出力電圧を発生する負荷センサ41が接続され、負荷センサ41の出力電圧は対応するAD変換器37を介して入力ポート35に入力される。更に入力ポート35にはクランクシャフトが例えば30°回転する毎に出力パルスを発生するクランク角センサ42が接続される。CPU34内ではクランク角センサ42の出力信号に基づいて機関回転数が算出される。一方、出力ポート36は対応する駆動回路38を介して点火栓3、燃料噴射弁4、スロットル弁駆動用アクチュエータ13、EGR制御弁19および燃料ポンプ21に接続される。
<ニューラルネットワークの概要>
本発明による実施例では、ニューラルネットワークを用いて内燃機関の性能を表す種々の値を推定するようにしている。図2はこのニューラルネットワークの一例を示している。図2における丸印は人工ニューロンを表しており、ニューラルネットワークにおいては、この人工ニューロンは、通常、ノード又はユニットと称される(本願では、ノードと称す)。図2において L=1は入力層、L=2および L=3は隠れ層、L=4は出力層を夫々示している。また、図2において、x1およびx2 は入力層 ( L=1) の各ノードからの出力値を示しており、y は出力層 ( L=4) のノードからの出力値を示しており、z1、z2 およびz3 は隠れ層 ( L=2) の各ノードからの出力値を示しており、z1およびz2 は隠れ層 ( L=3) の各ノードからの出力値を示している。なお、隠れ層の層数は、1個又は任意の個数とすることができ、入力層のノードの数および隠れ層のノードの数も任意の個数とすることができる。なお、図2には、出力層のノードの数が1個の場合が示されているが、出力層のノードの数は2個以上の複数個とすることができる。
入力層の各ノードでは入力がそのまま出力される。一方、隠れ層 ( L=2) の各ノードには、入力層の各ノードの出力値x
1およびx
2 が入力され、隠れ層 ( L=2) の各ノードでは、夫々対応する重みwおよびバイアスbを用いて総入力値uが算出される。例えば、図2において隠れ層 ( L=2) のz
k(k=1,2,3)で示されるノードにおいて算出される総入力値u
kは、次式のようになる。
次いで、この総入力値u
kは活性化関数fにより変換され、隠れ層 ( L=2) のz
kで示されるノードから、出力値z
k(=f(u
k))として出力される。隠れ層 ( L=2) の他のノードについても同様である。一方、隠れ層 ( L=3) の各ノード には、隠れ層 ( L=2) の各ノードの出力値z
1、z
2 およびz
3 が入力され、隠れ層 ( L=3 ) の各ノードでは、夫々対応する重みwおよびバイアスbを用いて総入力値u(Σz・w+b)が算出される。この総入力値uは同様に活性化関数により変換され、隠れ層 ( L=3 ) の各ノードから、出力値z
1 、z
2 として出力される、なお、本発明による実施例では、この活性化関数としてシグモイド関数σが用いられている。
一方、出力層 ( L=4) のノード には、隠れ層 ( L=3) の各ノードの出力値z1 およびz2 が入力され、出力層 のノードでは、夫々対応する重みwおよびバイアスbを用いて総入力値u(Σz・w+b)が算出されるか、又は、夫々対応する重みwのみを用いて総入力値u(Σz・w)が算出される。本発明による実施例では、出力層のノードでは恒等関数が用いられており、従って、出力層のノードからは、出力層のノードにおいて算出された総入力値uが、そのまま出力値yとして出力される。
<ニューラルネットワークによる関数の表現>
さて、ニューラルネットワークを用いると任意の関数を表現することができ、次に、このことについて簡単に説明する。まず初めに、活性化関数として用いられているシグモイド関数σについて説明すると、シグモイド関数σは、σ(x)=1/(1+exp(-x))で表され、図3Aに示されるようにxの値に応じて0と1の間の値を取る。ここで、xをwx+bに置き換えると、シグモイド関数σは、σ(wx+b)=1/(1+exp(-wx―b))で表される。ここで、wの値を大きくしていくと、図3Bにおいて曲線σ1、σ2、σ3で示されるように、シグモイド関数σ(wx+b)の曲線部分の傾斜が次第に急になり、wの値を無限大にすると、図3Bにおいて曲線σ4で示されるように、シグモイド関数σ(wx+b)は、x=−b/w(wx+b=0となるx、即ち、σ(wx+b)=0.5となるxにおいて、図3Bに示されるように、ステップ状に変化するようになる。このようなシグモイド関数σの性質を利用すると、ニューラルネットワークを用いて任意の関数を表現することができる。
例えば、図4Aに示されるような1個のノードからなる入力層 ( L=1) と、2個のノードからなる隠れ層 ( L=2) と、1個のノードからなる出力層 ( L=3) とにより構成されるニューラルネットワークを用いて、2次関数に近似した関数を表現することができる。なお、この場合、出力層 ( L=3)の個数を複数個にしても任意の関数を表現することができるが、容易に理解し得るように、出力層 ( L=3)の ノードの個数が一個の場合を例にとって説明する。さて、図4Aに示されるニューラルネットワークでは、図4Aに示されるように、入力層 ( L=1) のノードには入力値xが入力され、隠れ層 ( L=2) においてz1で示されるノードには、重みw1 (L2) およびバイアスb1を用いて算出された入力値u=x・w1 (L2)+b1 が入力される。この入力値uはシグモイド関数σ(x・w1 (L2)+b1)により変換され、出力値z1 として出力される。同様に、隠れ層 ( L=2) においてz2で示されるノードには、重みw2 (L2)およびバイアスb2 を用いて算出された入力値u=x・w2 (L2)+b2 が入力され、この入力値uはシグモイド関数σ(x・w2 (L2)+b2)により変換され、出力値z2 として出力される。
一方、出力層 ( L=3) のノード には、隠れ層 ( L=2) の各ノードの出力値z1 およびz2 が入力され、出力層 のノードでは、夫々対応する重みw1 (y) およびw2 (y) を用いて総入力値u(Σz・w=z1・w1 (y) +z2・w2 (y))が算出される。前述したように、本発明による実施例では、出力層のノードでは恒等関数が用いられており、従って、出力層のノードからは、出力層のノードにおいて算出された総入力値uが、そのまま出力値yとして出力される。
図4Bの(I)には、x=0においてシグモイド関数σ(x・w1 (L2)+b1)の値がほぼ零となるように重みw1 (L2)およびバイアスb1が設定されたときの隠れ層 ( L=2) のノードからの出力値z1が示されている。一方、シグモイド関数σ(x・w2 (L2)+b2)において、例えば、重みw2 (L2)をマイナスの値にすると、シグモイド関数σ(x・w2 (L2)+b2)の曲線の形は、図4Bの(II)に示されるように、xの増大に伴い減少するような形となる。図4Bの(II)には、x=0においてシグモイド関数σ(x・w2 (L2)+b2)の値がほぼ零となるように重みw2 (L2)およびバイアスb2 が設定されたときの隠れ層 ( L=2) のノードからの出力値z2 の変化が示されている。
一方、図4Bの(III)には、隠れ層 ( L=2) の各ノードからの出力値z1 とz2 の和(z1 +z2 )が実線で示されている。なお、図4Aに示されるように、各出力値z1 、z2 には、夫々対応する重みw1 (y) およびw2 (y) が乗算されており、図4Bの(III)には、w1 (y) 、w2 (y) >1でありかつw1 (y) ≒w2 (y) であるときの出力値yの変化が破線Aで示されている。更に、図4Bの(III)には、w1 (y) 、w2 (y) >1でありかつw1 (y)> w2 (y) であるときの出力値yの変化が一点破線Bで示されており、図4Bの(III)には、w1 (y) 、w2 (y) >1でありかつw1 (y)< w2 (y) であるときの出力値yの変化が一点破線Cで示されている。図4Bの(III)において、Wで示される範囲内における破線Aの形状は、y=ax2(aは係数)で示されるような2次関数に近似した曲線を表しており、従って、図4Aに示されるようなニューラルネットワークを用いることにより、2次関数に近似した関数を表現できることがわかる。
一方、図5Aは、図4Aにおける重みw1 (L2) およびw2 (L2) の値を大きくすることにより、シグモイド関数σの値を、図3Bに示されるように、ステップ状に変化させた場合を示している。図5Aの(I)には、x=―b1 /w1 (L2) において、シグモイド関数σ(x・w1 (L2)+b1 )の値がステップ状に増大するように重みw1 (L2)およびバイアスb1が設定されたときの隠れ層 ( L=2) のノードからの出力値z1が示されている。また、図5Aの(II)には、x=―b1 /w1 (L2) よりも少し大きいx=−b2 /w2 (L2) においてシグモイド関数σ(x・w2 (L2)+b2)の値がステップ状に減少するように重みw2 (L2)およびバイアスb2 が設定されたときの隠れ層 ( L=2) のノードからの出力値z2が示されている。また、図5Aの(III)には、隠れ層 ( L=2) の各ノードからの出力値z1 とz2 の和(z1 +z2 )が実線で示されている。図4Aに示されるように、各出力値z1 、z2 には、夫々対応する重みw1 (y) およびw2 (y) が乗算されており、図5Aの(III)には、w1 (y) 、w2 (y) >1であるときの出力値yが破線で示されている。
このように、図4Aに示されるニューラルネットワークにおいて、隠れ層 ( L=2) の一対のノードにより、図5Aの(III)に示されるような短冊状の出力値yが得られる。従って、隠れ層 ( L=2) の対をなすノード数を増大し、隠れ層 ( L=2) の各ノードにおける重みwおよびバイアスbの値を適切に設定すると、図5Bにおいて破線の曲線で示すような関数y=f(x)を近似する関数を表現できることになる。なお、図5Bでは、各短冊が接するように描かれているが、実際には、各短冊は部分的に重なる場合がある。また、実際には、wの値は無限大ではないために、各短冊は、正確な短冊状にはならず、図3Bにおいてσ3で示される曲線部分の上半分のような曲線状となる。なお、詳細な説明は省略するが、図6Aに示されるように、異なる二つの入力値xIおよびx2に対し、隠れ層 ( L=2)において夫々対応する一対のノードを設けると、図6Bに示されるように、入力値xIおよびx2に応じた柱状の出力値yが得られる。この場合、各入力値xI、x2に対し、隠れ層 ( L=2) に多数の対をなすノードを設けると、夫々異なる入力値xIおよびx2に応じた複数個の柱状の出力値yが得られ、従って、入力値xIおよびx2 と出力値yとの関係を示す関数を表現できることがわかる。なお、異なる三つ以上の入力値xがある場合でも同様に、入力値xと出力値yとの関係を示す関数を表現できる。
<ニューラルネットワークにおける学習>
一方、本発明による実施例では、誤差逆伝播法を用いて、ニューラルネットワーク内における各重みwの値およびバイアスbの値が学習される。この誤差逆伝播法は周知であり、従って、誤差逆伝播法についてはその概要を以下に簡単に説明する。なお、バイアスbは重みwの一種なので、以下の説明では、バイアスbは重みwの一つとされている。さて、図2に示すようなニューラルネットワークにおいて、L=2,L=3又は L=4の各層のノードへの入力値u
(L)における重みをw
(L)で表すと、誤差関数Eの重みw
(L)による微分、即ち、勾配∂E/∂w
(L)は、書き換えると、次式で示されるようになる。
ここで、z
(L−1)・∂w
(L)= ∂u
(L)であるので、(∂E/∂u
(L))=δ
(L)とすると、上記(1)式は、次式でもって表すことができる。
ここで、u
(L)が変動すると、次の層の総入力値u
(L+1)の変化を通じて誤差関数Eの変動を引き起こすので、δ
(L)は、次式で表すことができる。
ここで、z
(L)=f(u
(L)) と表すと、上記(3)式の右辺に現れる入力値u
k (L+1)は、次式で表すことができる。
ここで、上記(3)式の右辺第1項(∂E/∂u
(L+1))はδ
(L+1)であり、上記(3)式の右辺第2項(∂u
k (L+1) /∂u
(L))は、次式で表すことができる。
従って、δ
(L)は、次式で表される。
即ち、δ
(L+1)が求まると、δ
(L)を求めることができることになる。
さて、或る入力値に対して教師データy
tが求められており、この入力値に対する出力層からの出力値がyであった場合、誤差関数として二乗誤差が用いられている場合には、二乗誤差Eは、E=1/2(y−y
t)
2で求められる。この場合、図2の出力層(L=4)のノードでは、出力値y= f(u
(L)) となり、従って、この場合には、出力層(L=4)のノードにおけるδ
(L)の値は次式のようになる。
ところで、本発明による実施例では、前述したように、f(u
(L)) は恒等関数であり、f’(u
(L)) = 1となる。従って、δ
(L)=y−y
t となり、δ
(L)が求まる。
δ
(L)が求まると、上式(6)を用いて前層のδ
(L−1)が求まる。このようにして順次、前層のδが求められ、これらδの値を用いて、上式(2)から、各重みwについて誤差関数Eの微分、即ち、勾配∂E/∂w
(L)が求められる。勾配∂E/∂w
(L)が求められると、この勾配∂E/∂w
(L)を用いて、誤差関数Eの値が減少するように、重みwの値が更新される。即ち、重みwの値の学習が行われることになる。なお、出力層(L=4)が複数個のノードを有する場合には、各ノードからの出力値をy
1、y
2・・・、対応する教師データをy
t1、y
t2・・・とすると、誤差関数Eとして、次の二乗和誤差Eが用いられる。
<本発明による実施例>
次に、図7Aから図10を参照しつつ、本発明による機械学習装置の第1実施例について説明する。この本発明による第1実施例では、図4Aに示されるように、一個の入力層 ( L=1)と、一層からなる隠れ層 ( L=2)と、一個の出力層 ( L=3)からなるニューラルネットワークが用いられている。また、この第1実施例は、図4Aに示されるようなニューラルネットワークを用いて、出力値yが入力値xの2次関数で表されるように、ニューラルネットワークの重みの学習が行われた場合を示している。なお、図7Aから図8Bにおいて、破線は真の2次関数の波形を示しており、黒で塗り潰された丸は教師データを示しており、リング状の丸は、入力値xに対応する出力値yと教師データとの差が小さくなるようにニューラルネットワークの重みの学習が行われた後の出力値yを示しており、実線の曲線は、学習終了後の入力値xと出力値yとの関係を示している。また、図7Aから図8Bにおいて、AとBとの間、即ち、Rは入力値xの予め設定されている範囲を示している。
さて、図7Aおよび図7Bは、本願発明が解決しようとしている課題を説明するための図であり、従って、まず初めに、図7Aおよび図7Bを参照しつつ、本願発明が解決しようとしている課題について説明する。図7Aは、図4Aに示されるように隠れ層 ( L=2) のノードの個数が2個であるニューラルネットワークを用いて、予め設定されている範囲R内の入力値xに対し、出力量yが入力値xの2次関数y=ax2 (aは定数)となるようにニューラルネットワークの重みを学習した場合を示している。図7Aに示されるように、ニューラルネットワークの隠れ層 ( L=2) が2個のノードしか有さない場合でも、入力値xが予め設定されている範囲R内にある場合には、実線で示されるように、2次関数に近い関数が表現される。
即ち、入力値xの予め設定されている範囲Rについて学習が行われた場合には、予め設定されている範囲Rについては、複数のシグモイド関数σの曲線部分の適切な組み合わせにより、出力値yが2次関数に近い関数として表現される。しかしながら、入力値xの予め設定されている範囲R外については、学習が行われていないために、実線で示されるように、シグモイド関数σが大きく変化する曲線部分の両端の直線部分がそのまま出力値yとして現れる。従って、学習完了後の出力値yは、図7Aにおいて実線で示されるように、入力値xの予め設定されている範囲R内においては、2次関数に近い関数の形で現れ、入力値xの予め設定されている範囲R外においては、入力値xに対してほとんど変化しない直線に近い形で現れる。従って、図7Aに示されるように、入力値xの予め設定されている範囲R外においては、出力値yは破線で示される2次曲線に対して、大きく乖離している。
一方、図7Bは、入力値xが、例えば、図7Bにおいてx0 で示されるように、入力値xの予め設定されている範囲R外になってしまった場合において、入力値xがx0 のときの出力値y0も教師データに含めて、ニューラルネットワークの重みが学習された場合を示している。このように、入力値xの予め設定されている範囲R外の出力値y0も含めて学習が行われた場合には、図4Bのz1で示されるシグモイド関数σのz1=1となる直線部分が出力値y0を含むように上昇し、図4Bのz2で示されるシグモイド関数σが全体的に右に移動すると共にシグモイド関数σの値が全体的に低くなるために、図7Bにおいて実線で示されるように、予め設定されている範囲R内において、学習終了後の出力値yの値が2次曲線に対して大きく乖離してしまう。このように入力値xの予め設定されている範囲R外になってしまった場合には、適切な出力値yを得ることができない。
ところがこの場合、ニューラルネットワークの隠れ層 ( L=2) のノードの個数を増大すると、入力値xが予め設定されている範囲R外になった場合でも、適切な出力値yが得られることが判明したのである。次に、このことについて、本発明による第1実施例を示す図8Aおよび図8Bを参照しつつ説明する。図8Bは、図8Aに示されるように、ニューラルネットワークの隠れ層 ( L=2) のノードの個数を2個から3個に増大した状態で、入力値xがx0 のときの出力値y0も教師データに含めて、ニューラルネットワークの重みを学習したときの学習結果を示している。このようにニューラルネットワークの隠れ層 ( L=2) のノードの個数が増大せしめられると、図8Bにおいて実線で示されるように、出力値yの値が、破線で示される2次曲線に重なるようになる。従って、図8Bに示されるように、入力値xが、予め想定される使用範囲R外になった場合でも、ニューラルネットワークの隠れ層 ( L=2) のノードの個数を増大することにより、適切な出力値yを得られることがわかる。そこで本発明による第1実施例では、入力値xが、予め設定されている範囲R外になった場合には、ニューラルネットワークの隠れ層 ( L=2) のノードの個数を増大させるようにしている。
次に、図7Aから図8Bに示される入力値xおよび出力値yの具体的な一例について説明する。内燃機関の分野においては、内燃機関に関する特定の種別の運転パラメータの値を入力値xとしたときに、実際の出力量yが入力値xの2次関数の形となる場合があり、そのような場合の一例として、内燃機関に関する特定の種別の運転パラメータの値、即ち、入力値xが機関回転数N(rpm)であり、出力量yが排気損失量である場合がある。この場合、機関回転数Nの使用範囲は、機関が定まるとそれに応じて定まり、従って、機関回転数Nの範囲は、予め設定されている。一方、排気損失量は、機関燃焼室から排出される熱エネルギ量を示しており、機関燃焼室から排出される排気ガス量に比例し、機関燃焼室から排出される排気ガス温と外気温との温度差に比例する。この排気損失量は、実際に機関を運転したときのガス温度等の検出値に基づいて算出され、従って、この算出された排気損失量は実測により得られた値を示していることになる。
この具体的な一例では、入力値x、即ち、機関回転数Nが、予め設定されている範囲R内であるときには、実測により得られた教師データを用いて、出力値yと、入力値xに対応した教師データとの差が小さくなるようにニューラルネットワークの重みが学習される。即ち、内燃機関に関する特定の種別の運転パラメータの値が、予め設定されている範囲R内であるときには、実測により得られた教師データを用いて、出力値yと、内燃機関に関する特定の種別の運転パラメータの値に対応した教師データとの差が小さくなるようにニューラルネットワークの重みが学習される。一方、入力値x、即ち、機関回転数Nが、予め設定されている範囲外であるときには、ニューラルネットワークの隠れ層のノードの個数が増大されると共に、新たに取得された入力値x、即ち、機関回転数Nに対し実測により得られた教師データを用いて、出力値yと、入力値xに対応した教師データとの差が小さくなるようにニューラルネットワークの重みが学習される。即ち、内燃機関に関する特定の種別の運転パラメータの値が、予め設定されている範囲外であるときには、ニューラルネットワークの隠れ層のノードの個数が増大されると共に、新たに取得された内燃機関に関する特定の種別の運転パラメータの値に対し実測により得られた教師データを用いて、出力値yと、内燃機関に関する特定の種別の運転パラメータの値に対応した教師データとの差が小さくなるようにニューラルネットワークの重みが学習される。従って、この場合、機関回転数Nが予め設定されている範囲Rよりも高くなったとしても、排気損失量を、比較的正確に、推定することができることになる。
なお、本発明による第1実施例は、図9に示されるような複数の隠れ層 ( L=2およびL=3) を有するニューラルネットワークにも適用することができる。図9に示されるようなニューラルネットワークでは、出力層(L=4)の一つ前の隠れ層 ( L=3) のノードの出力値z1、z2によって、出力層(L=4)から出力される関数の形が定まる。即ち、出力値yがどのような関数で表現できるかは、出力層(L=4)の一つ前の隠れ層 ( L=3) のノードの個数によって支配される。従って、図9に示されるようなニューラルネットワークにおいて、隠れ層のノードの個数を増大するときには、図9に示されるように、出力層(L=4)の一つ前の隠れ層 ( L=3) のノードの個数が増大せしめられる。
上述の第1実施例では、予め設定されている範囲R内の種々の入力値xに対して実測された排気損失量が教師データとして事前に求められており、即ち、予め設定されている範囲R内における内燃機関に関する特定の種別の運転パラメータの値に対して実測により教師データが事前に求められており、これら内燃機関に関する特定の種別の運転パラメータの値および教師データからニューラルネットワークの構造が決定され、出力値yと、内燃機関に関する特定の種別の運転パラメータの値に対応した教師データとの差が小さくなるようにニューラルネットワークの重みが事前に学習される。この予め設定されている範囲R内における内燃機関に関する特定の種別の運転パラメータの値に対して実測により事前に求められている教師データは電子制御ユニット30の記憶部に記憶される。この第1実施例では、事前学習において用いられたニューラルネットワークと同じ構造のニューラルネットワークを用い、学習が完了したときのニューラルネットワークの重みを用いて、車両運転中にオンボードで更に学習が行われる。図10は、このオンボードで行われる第1実施例の学習処理ルーチンを示している。なお、図10に示される学習処理ルーチンは一定時間毎の、例えば、一秒毎の割り込みによって実行される。
図10を参照すると、まず初めに、ステップ101において、電子制御ユニット30の記憶部に記憶されている学習済みの重みと、事前の学習において用いられていた教師データ、即ち、予め設定されている範囲R内における内燃機関に関する特定の種別の運転パラメータの値に対して実測により事前に求められている教師データと、入力データの範囲R、即ち、内燃機関に関する特定の種別の運転パラメータの値の予め設定されている範囲を示す値A,Bが読み込まれる。この学習済みの重みは、重みの初期値として用いられる。次いで、ステップ102では、事前の学習において用いられていたニューラルネットワークの出力層の一つ前の隠れ層のノードの個数Kが読み込まれる。次いで、ステップ103に進んで、新たな入力値x、即ち、新たな内燃機関に関する特定の種別の運転パラメータの値が取得され、この新たな入力値x、即ち、新たな内燃機関に関する特定の種別の運転パラメータの値は、電子制御ユニット30の記憶部に記憶される。更に、ステップ103では、新たな入力値xに対する排気損出量の実測値が教師データとして、電子制御ユニット30の記憶部に記憶される。即ち、ステップ103では、新たに取得された内燃機関に関する特定の種別の運転パラメータの値に対し実測により得られた教師データが電子制御ユニット30の記憶部に記憶される。
次いで、ステップ104では、新たな入力値x、即ち、新たに取得された内燃機関に関する特定の種別の運転パラメータの値が、予め設定されている範囲Rを示すA,B間にあるか否か、即ち、新たな入力値xがA以上であり、B以下であるか否かが判別される。新たな入力値xが、予め設定されている範囲Rを示すA,B間にあるときには、ステップ105に進んで、入力値x、即ち、新たに取得された内燃機関に関する特定の種別の運転パラメータの値がニューラルネットワークの入力層のノードに入力され、ニューラルネットワークの出力層のノードから出力された出力値yと新たに取得された内燃機関に関する特定の種別の運転パラメータの値に対し実測により得られた教師データとに基づき、誤差逆伝播法を用いて、出力値yと教師データとの差が小さくなるようにニューラルネットワークの重みが学習される。
一方、ステップ104において、新たな入力値x、即ち、新たに取得された内燃機関に関する特定の種別の運転パラメータの値が、予め設定されている範囲Rを示すA,B間にないと判別されたときには、ステップ106に進んで、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数Kが更新され、出力層の一つ前の隠れ層のノードの個数Kが増大せしめられる。このとき、第1実施例では、出力層の一つ前の隠れ層のノードの個数Kが1個だけ増大される。次いで、ステップ107では、出力層の一つ前の隠れ層のノードの個数Kを増大させるようにニューラルネットワークが更新され、次いで、ステップ105に進む。ステップ105では、新たな入力値xに対して新たに得られた教師データも教師データに含めて、出力値yと教師データとの差が小さくなるように、更新されたニューラルネットワークの重みが学習される。即ち、ステップ105では、新たに取得された内燃機関に関する特定の種別の運転パラメータの値に対し実測により得られた教師データ、および予め設定されている範囲R内における内燃機関に関する特定の種別の運転パラメータの値に対して実測により事前に求められている教師データを用いて、予め設定されている範囲内および予め設定されている範囲外の内燃機関に関する特定の種別の運転パラメータの値に応じて変化する出力値yと、この内燃機関に関する特定の種別の運転パラメータの値に対応した教師データとの差が小さくなるように、更新されたニューラルネットワークの重みが学習される。
この場合、新たに取得された内燃機関に関する特定の種別の運転パラメータの値が予め設定されている範囲外であるときには、新たに取得された内燃機関に関する特定の種別の運転パラメータの値に対し実測により得られた教師データの個数が2個以上の一定個数以上である場合に、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数を増大させることもできる。従って、この第1実施例では、新たに取得された内燃機関に関する特定の種別の運転パラメータの値が予め設定されている範囲外であるときには、新たに取得された内燃機関に関する特定の種別の運転パラメータの値に対し実測により得られた教師データの個数の増大に応じて、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数が増大されることになる。
また、予め設定されている範囲外の新たに取得された内燃機関に関する特定の種別の運転パラメータの値に対し実測により得られた教師データが複数個ある場合、図8BにおいてBとC間で示される予め設定されている運転パラメータの値の範囲における教師データのデータ密度の増大に応じて、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数を増大させることができる。なお、図8BにおいてBおよびCは夫々、この予め設定されている運転パラメータの値の範囲の最小値と最大値を示しており、従って、正確に言うと、教師データの個数を運転パラメータの値の予め設定されている範囲を示す最大値C及び最小値Bの差分値(C−B)で除したデータ密度の増大に応じて、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数を増大させることができる。
さて、本発明の実施例において用いられている内燃機関は、図1に示されるように、電子制御ユニット30を具備しており、この電子制御ユニット30は、内燃機関の運転パラメータの値を取得するパラメータ値取得部と、入力層、隠れ層および出力層からなるニューラルネットワークを用いて演算を行う演算部と、記憶部とを具備している。ここで、図1に示される入力ポート35が上述のパラメータ値取得部を構成しており、CPU34が上述の演算部を構成しており、ROM32およびRAM33が上述の記憶部を構成している。なお、CPU34、即ち、上述の演算部では、内燃機関の運転パラメータの値が入力層に入力され、機関の運転パラメータの値に応じて変化する出力値が出力層から出力される。また、内燃機関に関する特定の種別の運転パラメータの値に対して予め設定されている範囲Rは、予めROM32内、即ち、上述の記憶部に記憶されている。更に、学習済みの重みと、予め設定されている範囲R内における内燃機関に関する特定の種別の運転パラメータの値に対して実測により事前に求められている教師データは、RAM33内、即ち、上述の記憶部に記憶されている。
図11は、本発明による第1実施例において用いられているニューラルネットワークの変形例を示している。この変形例では、出力層(L=4)が二個のノードを有している。
この変形例では、図9に示される例と同様に、入力値xが機関回転数N(rpm)とされている。一方、この変形例では、一方の出力量y1が、図9に示される例と同様に、排気損失量とされており、他方の出力量y2が、入力値xの2次関数となる何らかの量、例えば燃料消費率とされている。この変形例でも、出力層(L=4)の各ノードでは、活性化関数として恒等関数が用いられている。このように出力層(L=4)が複数個のノードを有する場合には、前述したように誤差関数Eとして、前式(8)に示される二乗和誤差E(各ノードからの出力値がy1、y2・・・、対応する教師データがyt1、yt2・・・)が用いられる。この場合、前式(7)からわかるように、一方のノードについては二乗和誤差Eをy1により偏微分するので(∂E/∂y1)、一方のノードにおけるδ(L)の値は、δ(L)=y1−yt1となり、他方のノードについては二乗和誤差Eをy2により偏微分するので(∂E/∂y2)、他方のノードにおけるδ(L)の値は、δ(L)=y2−yt12となる。出力層(L=4)の各ノードについて、δ(L)が求まると前式(6)を用いて前層のδ(L−1)が求まる。このようにして順次、前層のδが求められ、これらδの値を用いて、前式(2)から、各重みwについて誤差関数Eの微分、即ち、勾配∂E/∂w(L)が求められる。勾配∂E/∂w(L)が求められると、この勾配∂E/∂w(L)を用いて、誤差関数Eの値が減少するように、重みwの値が更新される。
図11に示されるようにニューラルネットワークの出力層(L=4)が複数個のノードを有する場合においても、出力層(L=4)の一つ前の隠れ層 ( L=3) のノードの出力値z1、z2によって、出力層(L=4)の各ノードから出力される関数の形が定まる。即ち、各出力値y1、y2がどのような関数で表現できるかは、出力層(L=4)の一つ前の隠れ層 ( L=3) のノードの個数によって支配される。従って、図11に示されるようなニューラルネットワークにおいて、隠れ層のノードの個数を増大するときには、図11に示されるように、出力層(L=4)の一つ前の隠れ層 ( L=3) のノードの個数が増大せしめられる。
図12から図14Bは、本発明による機械学習装置の第2実施例を示している。この第2実施例では、内燃機関に関する運転パラメータが複数の種別の運転パラメータからなり、内燃機関に関する複数の種別の運転パラメータの値に基づいて、ニューラルネットワークの重みの学習が行われる。具体的な一例として、内燃機関の運転パラメータが機関回転数、アクセル開度(アクセルペダルの踏込み量)および外気温からなり、これら内燃機関の運転パラメータの値に基づいて、内燃機関の出力トルクを推定するニューラルネットワークモデルを作成する場合が示されている。この具体的な一例では、図13に示されるように、ニューラルネットワークの入力層 ( L=1) は3個のノードからなり、各ノードに、機関回転数を示す入力値x1、アクセル開度を示す入力値x2および外気温を示す入力値x3 が入力される。また、隠れ層(L=2、L=3)の層数は、1個又は任意の個数とすることができ、隠れ層(L=2、L=3)のノードの数も任意の個数とすることができる。なお、図13に示される例では、出力層(L=4)のノードの数は1個とされている。
一方、図14Aにおいて、A1とB1 との間、即ち、R1は機関回転数の予め設定されている範囲を示しており、A2とB2との間、即ち、R2はアクセル開度の予め設定されている範囲を示しており、A3とB3との間、即ち、R3は外気温の予め設定されている範囲を示している。なお、図14Bも、図14Aと同様に、A1とB1 との間は機関回転数の予め設定されている範囲を示しており、A2とB2との間はアクセル開度の予め設定されている範囲を示しており、A3とB3との間は外気温の予め設定されている範囲を示している。なお、この第2実施例では、アクセル開度は負荷センサ41により検出され、外気温は大気温センサ24によって検出される。また、この第2実施例では、例えば、機関クランクシャフトに取り付けられたトルクセンサによって機関の出力トルクが実測され、この実測により得られたトルクが教師データとされている。
この第2実施例でも、予め設定されている範囲Rn内の種々の入力値xn(n= 1,2,3)に対して実測された機関出力トルクが教師データとして事前に求められており、即ち、予め設定されている範囲Rn内における内燃機関に関する複数の種別の運転パラメータの値に対して実測により教師データが事前に求められており、これら内燃機関に関する複数の種別の運転パラメータの値および教師データからニューラルネットワークの構造が決定され、出力値yと、内燃機関に関する複数の種別の運転パラメータの値に対応した教師データとの差が小さくなるようにニューラルネットワークの重みが事前に学習される。この予め設定されている範囲Rn内における内燃機関に関する複数の種別の運転パラメータの値に対して実測により事前に求められている教師データは電子制御ユニット30の記憶部に記憶される。この第2実施例でも、事前学習において用いられたニューラルネットワークと同じ構造のニューラルネットワークを用い、学習が完了したときのニューラルネットワークの重みを用いて、車両運転中にオンボードで更に学習が行われる。図12は、このオンボードで行われる第2実施例の学習処理ルーチンを示しており、この学習処理ルーチンは一定時間毎の、例えば、一秒毎の割り込みによって実行される。
図12を参照すると、まず初めに、ステップ201において、電子制御ユニット30の記憶部に記憶されている学習済みの重みと、事前の学習において用いられていた教師データ、即ち、予め設定されている範囲Rn内における内燃機関に関する複数の種別の運転パラメータの値に対して実測により事前に求められている教師データと、入力データの範囲、即ち、内燃機関に関する複数の種別の運転パラメータの値の予め設定されている範囲を示す値An,Bn(n= 1,2,3)(図13A)が読み込まれる。この学習済みの重みは、重みの初期値として用いられる。次いで、ステップ202では、事前の学習において用いられていたニューラルネットワークの出力層の一つ前の隠れ層のノードの個数Kが読み込まれる。次いで、ステップ203に進んで、新たな入力値x、即ち、新たな内燃機関に関する複数の種別の運転パラメータの値が取得され、この新たな入力値x、即ち、新たな内燃機関に関する複数の種別の運転パラメータの値は、電子制御ユニット30の記憶部に記憶される。更に、ステップ203では、新たな入力値xに対する機関出力トルクの実測値が教師データとして、電子制御ユニット30の記憶部に記憶される。即ち、ステップ203では、新たに取得された内燃機関に関する複数の種別の運転パラメータの値に対し実測により得られた教師データが電子制御ユニット30の記憶部に記憶される。
次いで、ステップ204では、新たな入力値xn、即ち、新たに取得された内燃機関に関する複数の種別の運転パラメータの値が、予め設定されている範囲Rn(AnとBnとの間)内にあるか否か、即ち、新たな入力値xnがAn以上であり、Bn以下であるか否かが判別される。新たな入力値xnが、予め設定されている範囲Rn内にあるときには、ステップ205に進んで、各入力値xn、即ち、新たに取得された内燃機関に関する複数の種別の運転パラメータの値がニューラルネットワークの入力層の対応するノードに入力され、ニューラルネットワークの出力層のノードから出力された出力値yと、新たに取得された内燃機関に関する複数の種別の運転パラメータの値に対し実測により求められた教師データとに基づき、誤差逆伝播法を用いて、出力値yと教師データとの差が小さくなるようにニューラルネットワークの重みが学習される。
一方、ステップ204において、新たな入力値xn、即ち、新たに取得された内燃機関に関する複数の種別の運転パラメータの値の内の少なくとも一つの種別の運転パラメータの値が、予め設定されている範囲Rn(AnとBnとの間)内にないと判別されたとき、例えば、図14Bにおいて機関回転数を示す入力値x1が、B1からC1(B1<C1)までの予め設定されている範囲(B1〜C1)内にあるような場合、或いは図13Bにおいて外気温を示す入力値x3が、C3からA3(C3<A3)までの予め設定されている範囲(C3〜A3)内にあるような場合には、ステップ206に進む。ステップ206では、最初に、新たな入力値xnの属する範囲(Bn〜Cn)或いは範囲(Cn〜An)内における新たな入力値xnに対する教師データの密度D(=教師データ個数/(Cn―Bn)、或いは教師データ個数/(An―Cn))が算出される。
ところで、図14Bにおいて、B1およびC1は夫々、機関回転数の予め設定されている範囲の最小値と最大値、即ち、運転パラメータの値の予め設定されている範囲の最小値と最大値を示しており、教師データ密度Dは、教師データの個数を運転パラメータの値の予め設定されている範囲を示す最大値C1及び最小値B1の差分値(C1−B1)で除した値を示している。また、図14Bにおいて、C3およびA3は夫々、予め設定されている外気温の範囲の最小値と最大値、即ち、運転パラメータの値の予め設定されている範囲の最小値と最大値を示しており、教師データ密度Dは、教師データの個数を運転パラメータの値の予め設定されている範囲を示す最大値C3及び最小値A3の差分値(C3−A3)で除した値を示している。ステップ206では、教師データ密度Dが算出されると、教師データ密度Dが予め定められたデータ密度D0よりも高くなったか否かが判別される。教師データ密度Dが予め定められたデータ密度D0よりも低い場合には処理サイクルを完了する。
一方、ステップ206において、教師データ密度Dが予め定められたデータ密度D0よりも高くなったと判別されたときにはステップ207に進む。この場合、D(=教師データ個数/(An―Cn))>D0 のときには、次式により追加ノード数αが算出される。
追加ノード数α=round{ (K/(Bn-An))・(An-Cn)}
一方、D(=教師データ個数/(Cn―Bn))>D0 のときには、次式により追加ノード数αが算出される。
追加ノード数α=round{ (K/(Bn-An))・(Cn-Bn)}
なお、上式において、Kはノードの個数を示しており、roundは四捨五入を意味している。
ステップ207において追加ノード数αが算出されると、ステップ208に進んで、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数Kが更新され、出力層の一つ前の隠れ層のノードの個数Kが、追加ノード数αだけ増大せしめられる(K←K+α)。このように、この第2実施例では、教師データの個数を運転パラメータの値の予め設定されている範囲を示す最大値及び最小値の差分値で除したデータ密度が増大すると、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数が増大される。即ち、この第2実施例では、教師データの個数を運転パラメータの値の予め設定されている範囲を示す最大値及び最小値の差分値で除したデータ密度の増大に応じて、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数が増大される。
一方、上述したように、ステップ206からステップ207に進むのは、教師データ密度Dが予め定められたデータ密度D0に達したときであり、従って、ステップ207において追加ノード数αの算出に用いられている(An―Cn)の値および(Cn―Bn)の値は、教師データの個数に比例していることになる。従って、上式からわかるように、追加ノード数αは、新たな入力値xnの属する範囲(Bn〜Cn)或いは範囲(Cn〜An)内における教師データの個数に比例することになる。即ち、この第2実施例では、新たに取得された内燃機関に関する複数の種別の運転パラメータの値に対し実測により得られた教師データの個数の増大に応じて、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数が増大されることになる。
ステップ208において出力層の一つ前の隠れ層のノードの個数Kが、追加ノード数αだけ増大せしめられる(K←K+α)と、ステップ209に進み、出力層の一つ前の隠れ層のノードの個数Kを増大させるようにニューラルネットワークが更新される。次いで、ステップ205に進む。ステップ205では、新たな入力値xに対して新たに得られた教師データも教師データに含めて、出力値yと教師データとの差が小さくなるように、更新されたニューラルネットワークの重みが学習される。即ち、ステップ205では、新たに取得された内燃機関に関する複数の種別の運転パラメータの値に対し実測により得られた教師データ、および予め設定されている範囲Rn内における内燃機関に関する複数の種別の運転パラメータの値に対して実測により事前に求められている教師データを用いて、予め設定されている範囲内および予め設定されている範囲外の内燃機関に関する複数の種別の運転パラメータの値に応じて変化する出力値yと、この内燃機関に関する複数の種別の運転パラメータの値に対応した教師データとの差が小さくなるように、更新されたニューラルネットワークの重みが学習される。
さて、本発明の第2実施例では、内燃機関に関する複数の種別の運転パラメータの値に対して予め設定されている範囲Rnを示す値An,Bnは、予めROM32内、即ち、上述の記憶部に記憶されている。また、学習済みの重み、および予め設定されている範囲Rn内における内燃機関に関する複数の種別の運転パラメータの値に対して実測により事前に求められている教師データは、RAM33内、即ち、上述の記憶部に記憶されている。
図15は、本発明による第2実施例において用いられているニューラルネットワークの変形例を示している。この変形例では、出力層(L=4)が二個のノードを有している。
この変形例では、図13に示される例と同様に、入力値x1が機関回転数とされており、入力値x2がアクセル開度とされており、入力値x3が外気温とされている。一方、この変形例では、一方の出力量y1が、図13に示される例と同様に、内燃機関の出力トルクとされており、他方の出力量y2が、内燃機関の熱効率とされている。この熱効率は、実際に機関を運転したときの機関回転数、機関負荷、吸入空気圧、吸入空気温、排気ガス圧、排気ガス温、機関冷却水温等の検出値に基づいて算出され、従って、この熱効率は実測により得られた値を示している。この変形例でも、出力層(L=4)の各ノードでは、活性化関数として恒等関数が用いられている。更に、この変形例では、誤差関数Eとして、内燃機関の出力トルクの実測値および熱効率の実測値を教師データとした前式(8)に示される二乗和誤差Eが用いられ、誤差逆伝播法を用いて、誤差関数Eの値が減少するように、重みwの値が更新される。
図15に示されるようにニューラルネットワークの出力層(L=4)が複数個のノードを有する場合においても、出力層(L=4)の一つ前の隠れ層 ( L=3) のノードの出力値z1、z2、z3、z4によって、出力層(L=4)の各ノードから出力される関数の形が定まる。即ち、各出力値y1、y2がどのような関数で表現できるかは、出力層(L=4)の一つ前の隠れ層 ( L=3) のノードの個数によって支配される。従って、図15に示されるようなニューラルネットワークにおいて、隠れ層のノードの個数を増大するときには、出力層(L=4)の一つ前の隠れ層 ( L=3) のノードの個数が増大せしめられる。
図16および図17は、本発明による機械学習装置の第3実施例を示している。この第3実施例でも、内燃機関に関する運転パラメータが複数の種別の運転パラメータからなり、内燃機関に関する複数の種別の運転パラメータの値に基づいて、ニューラルネットワークの重みの学習が行われる。この第3実施例でも、内燃機関に関する複数の種別の運転パラメータの夫々について、各種別の運転パラメータの値の範囲が予め設定されている。図17は一例として、内燃機関に関する運転パラメータが二つの種別の運転パラメータからなる場合を示しており、図17において、一方の種別の運転パラメータの値の予め設定されている範囲がRx で、他方の種別の運転パラメータの値の予め設定されている範囲がRy で示されている。この第3実施例では、図17に示されるように、各種別の運転パラメータの値の予め設定されている範囲Rx、Ry を複数個に区分けすると共に、各種別の運転パラメータの値の区分けされた各区分け範囲の組み合わせにより画定される複数の区分け領域〔Xn,Ym〕(n=1,2・・・n、m=1,2・・・m)が予め設定されている。
なお、図17において、X1,X2・・・XnおよびY1,Y2・・・Ynは、夫々各種別の運転パラメータの値の区分け範囲を示している。また、この第3実施例には、具体的な一例として、内燃機関の運転パラメータが機関回転数および外気温からなり、これら内燃機関の運転パラメータの値に基づいて、内燃機関からのHC排出量を推定するニューラルネットワークモデルを作成する場合が示されている。この場合には、X1,X2・・・Xnが、例えば1000rpm毎に区切られた機関回転数(1000rpm≦X1<200rpm、2000rpm≦X2<3000rpm・・・)を示しており、Y1,Y2・・・Ynが、例えば10℃毎に区切られた外気温(−30℃≦Y1<―20℃、―20℃≦Y2<−10℃・・・)を示している。
この第3実施例では、各区分け領域〔Xn,Ym〕毎に、夫々、独立したニューラルネットワークが作成されている。これらのニューラルネットワークでは、入力層 ( L=1) は2個のノードからなり、入力層 ( L=1) の各ノードに、機関回転数を示す入力値x1および外気温を示す入力値x2 が入力される。また、隠れ層(L=2、L=3)の層数は、1個又は任意の個数とすることができ、隠れ層(L=2、L=3)のノードの数も任意の個数とすることができる。なお、いずれのニューラルネットワークにおいても、出力層(L=4)のノードの数は1個とされている。なお、この第3実施例でも、変形例として、出力層(L=4)のノードの数を2個にすることができる。この場合、例えば、出力層(L=4)の一方のノードからの出力量が内燃機関からのHC排出量とされ、出力層(L=4)の他方のノードからの出力量が内燃機関からのNOX排出量とされる。
この第3実施例では、隠れ層(L=3)のノードの数は、ニューラルネットワーク毎に異なり、以下、区分け領域〔Xn,Ym〕におけるニューラルネットワークの出力層の一つ前の隠れ層のノードの個数をKnmで表す。この隠れ層のノードの個数Knmは、各区分け領域〔Xn,Ym〕内での入力値の変化に対する教師データの変化の複雑さに応じて、事前に設定されている。なお、この第3実施例では、図1に示されるNOXセンサ23に変えてHCセンサが排気通路内に配置される。この第3実施例では、このHCセンサによって機関からのHC排出量が実測され、この実測により得られたHC排出量が教師データとされる。なお、上述の第3実施例の変形例では、図1に示されるNOXセンサ23に加えてHCセンサが排気通路内に配置される。
この第3実施例では、内燃機関に関する複数の種別の運転パラメータの値の予め設定されている範囲Rx、Ry 内に形成されている各区分け領域〔Xn,Ym〕(n=1,2・・・n、m=1,2・・・m)内の種々の入力値x1、x2 に対して実測されたHC排出量が教師データとして事前に求められており、即ち、予め設定されている範囲Rx、Ry内における内燃機関に関する複数の種別の運転パラメータの値に対して実測により教師データが事前に求められており、これら内燃機関に関する複数の種別の運転パラメータの値および教師データから、隠れ層のノードの個数Knmも含めて各区分け領域〔Xn,Ym〕に対するニューラルネットワークの構造が決定され、出力値yと内燃機関に関する複数の種別の運転パラメータの値2に対応した教師データとの差が小さくなるように、各区分け領域〔Xn,Ym〕のニューラルネットワークの重みが事前に学習される。従って、この第3実施例では、この事前に学習の行われた区分け領域〔Xn,Ym〕(n=1,2・・・n、m=1,2・・・m)を、以下、学習済み区分け領域〔Xn,Ym〕と称することもある。なお、この予め設定されている範囲Rx、Ry 内における内燃機関に関する複数の種別の運転パラメータの値に対して実測により事前に求められている教師データは電子制御ユニット30の記憶部に記憶される。この第3実施例でも、各区分け領域〔Xn,Ym〕について、事前学習において用いられたニューラルネットワークと同じ構造のニューラルネットワークを用い、学習が完了したときのニューラルネットワークの重みを用いて、車両運転中にオンボードで更に学習が行われる。図16は、このオンボードで行われる第3実施例の学習処理ルーチンを示しており、この学習処理ルーチンは一定時間毎の、例えば、一秒毎の割り込みによって実行される。
図16を参照すると、まず初めに、ステップ301において、電子制御ユニット30の記憶部に記憶されている学習済みの重みと、事前の学習において用いられていた教師データ、即ち、予め設定されている範囲Rx、Ry 内における内燃機関に関する複数の種別の運転パラメータの値に対して実測により事前に求められている教師データと、各学習済み区分け領域〔Xn,Ym〕(n=1,2・・・n、m=1,2・・・m)が読み込まれる。この学習済みの重みは、重みの初期値として用いられる。次いで、ステップ302では、各学習済み区分け領域〔Xn,Ym〕に対し事前の学習において用いられていた出力層の一つ前の隠れ層のノードの個数Knmが読み込まれる。次いで、ステップ303に進んで、新たな入力値x1、x2、即ち、新たな内燃機関に関する複数の種別の運転パラメータの値が取得され、この新たな入力値x1、x2、即ち、新たな内燃機関に関する複数の種別の運転パラメータの値は、電子制御ユニット30の記憶部に記憶される。更に、ステップ303では、新たな入力値x1、x2 に対するHC排出量の実測値が教師データとして、電子制御ユニット30の記憶部に記憶される。即ち、ステップ303では、新たに取得された内燃機関に関する複数の種別の運転パラメータの値に対し実測により得られた教師データが電子制御ユニット30の記憶部に記憶される。
次いで、ステップ304では、新たな入力値x1、x2が、学習済み区分け領域〔Xn,Ym〕内にあるか否かが、即ち、新たに取得された内燃機関に関する複数の種別の運転パラメータの値が予め設定されている範囲Rx、Ry 内にあるか否かが判別される。新たな入力値x1、x2 が、学習済み区分け領域〔Xn,Ym〕内にあるとき、即ち、新たに取得された内燃機関に関する複数の種別の運転パラメータの値が予め設定されている範囲Rx、Ry 内あるときには、ステップ305に進んで、入力値x1、x2、即ち、新たに取得された内燃機関に関する複数の種別の運転パラメータの値 が、新たに取得された内燃機関に関する複数の種別の運転パラメータの値の属する学習済み区分け領域〔Xn,Ym〕のニューラルネットワークの入力層の各ノードに入力され、ニューラルネットワークの出力層のノードから出力された出力値yと、新たに取得された内燃機関に関する複数の種別の運転パラメータの値に対し実測により求められた教師データとに基づき、誤差逆伝播法を用いて、出力値yと教師データとの差が小さくなるように、新たに取得された内燃機関に関する複数の種別の運転パラメータの値の属する学習済み区分け領域〔Xn,Ym〕のニューラルネットワークの重みが更に学習される。
一方、ステップ304において、新たな入力値x1、x2が、学習済み区分け領域〔Xn,Ym〕内にないと判別されたとき、例えば、図17において入力値x1、x2が属しかつ入力値x1、x2の予め設定された範囲の組み合わせにより画定される未学習領域〔Xa,Yb〕が、学習済み区分け領域〔Xn,Ym〕外に設定される。即ち、言い換えると、新たに取得された内燃機関に関する複数の種別の運転パラメータの内の少なくとも一つの種別の運転パラメータの値が予め設定されている範囲Rx、Ry 外であるときには、各種別の運転パラメータの値が属しかつ各種別の運転パラメータの値の予め設定された範囲の組み合わせにより画定される未学習領域〔Xa,Yb〕が、予め設定されている範囲Rx、Ry 外に設定される。
図17に示される例は、新たに取得された内燃機関に関する一方の種別の運転パラメータの値が予め設定されている範囲Rx 外であり、新たに取得された内燃機関に関する他方の種別の運転パラメータの値が予め設定されている範囲Ry 内における区分け範囲Y2に属している場合を示しており、この場合には、この未学習領域〔Xa,Yb〕は、一方の種別の運転パラメータの値に対し予め設定されている範囲Rx 外であって、他方の種別の運転パラメータの値が属している区分け範囲Y2内に、該区分け範囲Y2内の学習済み区分け領域〔Xn,Ym〕に隣接して設定される。
未学習領域〔Xa,Yb〕が設定されると、ステップ306に進む。ステップ306では、初めに、新たな入力値x1、x2 の属する未学習領域〔Xa,Yb〕内における教師データ密度Dが算出される。この教師データ密度D(=教師データ個数/〔Xa,Yb〕)は、教師データの個数を未学習領域〔Xa,Yb〕の面積、即ち、各種別の運転パラメータの値の予め設定された範囲の積で除した値を示している。次いで、教師データ密度Dが予め定められたデータ密度D0よりも高くなったか否か、および、新たな入力値x1、x2 の属する新領域〔Xa,Yb〕内における教師データの分散S2 が予め定められた分散S2 0よりも大きいか否か判別される。教師データ密度Dが予め定められたデータ密度D0よりも低い場合、又は、教師データの分散S2 が予め定められた分散S2 0 よりも小さい場合には処理サイクルを完了する。
一方、ステップ306において、教師データ密度Dが予め定められたデータ密度D0よりも高く、かつ教師データの分散S2 が予め定められた分散S2 0 よりも大きいと判別されたときにはステップ307に進む。なお、ステップ306においては、分散S2 が予め定められた分散S2 0よりも大きいか否かの判別については省略し、教師データ密度Dが予め定められたデータ密度D0よりも高くなったか否かのみを判断することもできる。この場合には、教師データ密度Dが予め定められたデータ密度D0よりも低い場合には処理サイクルを完了し、教師データ密度Dが予め定められたデータ密度D0よりも高いと判別されたときにはステップ307に進む。ステップ307では、下記のノード数算出式に基づいて、未学習領域〔Xa,Yb〕周りの学習済み区分け領域〔Xn,Ym〕におけるノード数Knmの平均値から、未学習領域〔Xa,Yb〕に対するノード数Kabが算出される。
ノード数Kab=1/NΣΣKij(i=(a−1)〜(a+1)、j=(b−1)〜(b+1))
なお、上式において、Nは、未学習領域〔Xa,Yb〕周りに隣接して存在する学習済み区分け領域〔Xn,Ym〕の個数を示している。この場合、未学習領域〔Xa,Yb〕周りの隣接する区分け領域〔Xn,Ym〕の中で、未だ使用されていない区分け領域〔Xn,Ym〕、即ち、ノード数Knmの存在しない区分け領域〔Xn,Ym〕がある場合には、その区分け領域〔Xn,Ym〕は、個数Nの算出から除外される。例えば、図15に示される例で言うと、未学習領域〔Xa,Yb〕周りの隣接する学習済み区分け領域〔Xn,Y1〕のノード数Kn1、学習済み区分け領域〔Xn,Y2〕のノード数Kn2および学習済み区分け領域〔Xn,Y3〕の ノード数Kn3 の平均値が、未学習領域〔Xa,Yb〕に対するノード数Kabとされる。
ところで、各区分け領域〔Xn,Ym〕内での入力値の変化に対する教師データの変化の関係が単純である場合には、隠れ層のノードの個数Knmを少なくしても十分に学習を行うことができるが、各区分け領域〔Xn,Ym〕内での入力値の変化に対する教師データの変化の関係が複雑である場合には、隠れ層のノードの個数Knmを多くしないと十分な学習を行うことができない。従って、前述したように、学習済み区分け領域〔Xn,Ym〕におけるニューラルネットワークの隠れ層のノードの個数Knmは、各学習済み区分け領域〔Xn,Ym〕内での入力値の変化に対する教師データの変化の複雑さに応じて設定される。ところで、二つの区分け領域〔Xn,Ym〕が近い場合には、これら区分け領域〔Xn,Ym〕間では、入力値の変化に対する教師データの変化の関係が似ており、従って、二つの区分け領域〔Xn,Ym〕が近い場合には、隠れ層のノードの個数Knmとして同じ個数を用いることができる。従って、この第3実施例では、未学習領域〔Xa,Yb〕周りの隣接する学習済み区分け領域〔Xn,Ym〕におけるノード数Knmの平均値が、未学習領域〔Xa,Yb〕に対するノード数Kabとされる。
ここで、第3実施例の変形例として、未学習領域〔Xa,Yb〕における教師データの個数を考慮に入れて、未学習領域〔Xa,Yb〕に対するノード数Kabを求める方法について簡単に説明する。即ち、未学習領域〔Xa,Yb〕における教師データ個数が、未学習領域〔Xa,Yb〕周りの隣接する学習済み区分け領域〔Xn,Ym〕における教師データ個数よりも多い場合には、未学習領域〔Xa,Yb〕に対するノード数Kabは、未学習領域〔Xa,Yb〕周りの隣接する学習済み区分け領域〔Xn,Ym〕におけるノード数Knmよりも多くすることが好ましい。従って、この変形例では、未学習領域〔Xa,Yb〕周りの隣接する学習済み領域〔Xn,Ym〕における教師データ個数の平均値MDを求め、未学習領域〔Xa,Yb〕における入力データ個数MNを平均値MDで除算することにより、ノード数増大率RK(=MN/MD)を求め、上述のノード数算出式から求められた未学習領域〔Xa,Yb〕に対するノード数Kabに、このノード数増大率RKを乗算して、最終的な未学習領域〔Xa,Yb〕に対するノード数Kabとされる。
ステップ307において未学習領域〔Xa,Yb〕に対するノード数Kabが算出されると、ステップ308に進んで、未学習領域〔Xa,Yb〕に対する新たなニューラルネットワークが作成される。この新たなニューラルネットワークでは、ノードの個数が、入力層については2個、出力層の一つ前の隠れ層についてはKab個、出力層については1個又は複数個とされる。次いで、ステップ305に進む。ステップ305では、未学習領域〔Xa,Yb〕について、出力値yと教師データとの差が小さくなるように、未学習領域〔Xa,Yb〕に対し作成されたニューラルネットワークの重みが学習される。
次に、図18Aから図19Bを参照しつつ、本発明による機械学習装置を、低負荷用の特殊な内燃機関に適用した場合の具体例について説明する。この具体例では、図12に示されるように、隠れ層(L=3)が4個のノードを有するニューラルネットワークを用いて、スロットル弁12の開度、機関回転数および点火時期から、NOX排出量を示す出力値yを出力するモデルを作成するようにしている。なお、この具体例において用いられている内燃機関では、スロットル弁12の開度の使用範囲が、5.5°から11.5°(最大閉弁位置におけるスロットル弁12の開度を0°としている)の間に設定されており、機関回転数の使用範囲が、1600(rpm)から3000(rpm)の間に設定されており、点火時期の使用範囲が0°(圧縮上死点)からATDC(圧縮上死点前)40°の間に設定されている。
図18Aは、点火時期と機関回転数に対する教師データの分布を示しており、図18Bは、スロットル弁開度と点火時期に対する教師データの分布を示している。なお、図18Aおよび図18Bにおいて、黒丸は、事前に取得されている教師データの存在場所を示しており、三角印は事前に教師データが取得されていない場所を示している。図18Aおよび図18Bから、いかなるスロットル弁開度と、いかなる機関回転数と、いかなる点火時期に対して事前に教師データが取得されているかがわかる。例えば、図18Aにおいて機関回転数Nが2000(rpm)で、点火時期がATDC20°のときには、事前に教師データが取得されており、図18Bに示されるように、点火時期がATDC20°のときには、種々のスロットル弁開度に対して、事前に教師データが取得されていることがわかる。
一方、この具体例では、スロットル弁開度、機関回転数および点火時期がニューラルネットワークの入力層 ( L=1) の各ノードに入力され、出力値yと、NOXセンサ23により検出されたNOX排出量を示す教師データとの差が小さくなるように、ニューラルネットワークの重みが学習される。学習後の出力値yと、教師データとの関係が、図18C、図19Aおよび図19Bに示されている、なお、図18C、図19Aおよび図19Bでは、学習後の出力値yおよび教師データの値は、最大値が1となるように正規化して示されている。
さて、上述したように、この具体例において用いられている内燃機関では、スロットル弁12の開度の使用範囲が、5.5°から11.5°の間に設定されており、機関回転数Nの使用範囲が、1600(rpm)から3000(rpm)の間に設定されており、点火時期の使用範囲が0°(圧縮上死点)からATDC40°の間に設定されている。図18Cには、これらの使用範囲内において、スロットル弁開度、機関回転数Nおよび点火時期が使用されたときのNOX排出量を、教師データとして事前に取得し、出力値yと、事前に取得された教師データとの差が小さくなるように、ニューラルネットワークの重みが学習されたときの、学習後の出力値yと、教師データとの関係が丸印で示されている。
図18Cに示されるように、学習後の出力値yと、教師データとの関係を示す丸印は、一直線上に集まっており、従って、学習後の出力値yが、教師データに一致せしめられていることがわかる。ところで、例えば、スロットル弁12の開度を例に挙げると、エンジンの個体差や経年変化によって、スロットル弁12の開度が正規の開度からずれてしまい、スロットル弁12の開度の使用範囲が、5.5°から11.5°の間に設定されていたとしても、実際には、スロットル弁12の開度が、予め設定されている使用範囲を越えてしまうことがある。図18Aおよび図18Bに示される三角印は、スロットル弁12の開度が予め設定されている使用範囲を越えて13.5°となってしまったときに、新たに取得された教師データの場所を示している。
図18Cの三角印は、このようにスロットル弁12の開度が予め設定されている使用範囲を越えて13.5°となってしまったときに、新たに取得された教師データを用いず、事前に取得されている教師データのみを用いて、ニューラルネットワークの重みの学習を行った場合を示している。この場合には、スロットル弁12の開度が予め設定されている使用範囲を越えて13.5°となってしまったときのNOX排出量の推定値が、実測値から大巾にずれてしまうことがわかる。一方、図19Aの丸印は、このようにスロットル弁12の開度が予め設定されている使用範囲を越えて13.5°となってしまったときに取得された新たな教師データと、事前に取得されている教師データとの双方の教師データを用いて、ニューラルネットワークの重みの学習を行った場合を示している。この場合には、NOX排出量の推定値が、全体的に実測値からずれてしまうことがわかる。
これに対し、図19Bの丸印は、図19Aと同様に、スロットル弁12の開度が予め設定されている使用範囲を越えて13.5°となってしまったときに取得された新たな教師データと、事前に取得されている教師データとの双方の教師データを用い、図19Aとは異なり、ニューラルネットワークの隠れ層(L=3)のノードの数を4個から7個に増大した上で、ニューラルネットワークの重みの学習を行った場合を示している。この場合には、NOX排出量の推定値が、実測値に精度よく一致することがわかる。このように、新たに取得された機関の運転パラメータの値が予め設定されている範囲外であるときには、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数を増大させることによって、推定精度を高めることができる。
図20から図25は、本発明による機械学習装置を、エアコン(エアコンディショナー)の自動調整に適用した場合の第4実施例を示している。この実施例では、気温、湿度、位置およびエアコンの取り付けられている部屋の大きさから、最適なエアコンの風量、風向きおよび運転時間が自動的に設定される。この場合、エアコンの使用される条件や場所の範囲、即ち、気温、湿度、位置およびエアコンの取り付けられている部屋の大きさ等の運転パラメータの値の使用範囲は、エアコンの種類に応じて予め想定することができ、従って、通常は、エアコンの運転パラメータの値の予め設定さている範囲に対し、ニューラルネットワークの出力値と、最適なエコンの風量、風向きおよび運転時間との差が小さくなるようにニューラルネットワークの重みが予め学習される。
しかしながら、この場合にも、エアコンの運転パラメータの値が、予め設定さている範囲外となることがあり、この場合、予め設定さている範囲外に対しては、実際の値に基づく学習が行われていないために、ニューラルネットワークを用いて演算された出力値が、実際の値から大きく乖離した値になってしまうことになる、そこでこの実施例においても、新たに取得されたエアコンに関する運転パラメータの値が予め設定されている範囲外であるときには、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数を増大させるか、又は、ニューラルネットワークの個数を増大して、新たに取得されたエアコンに関する運転パラメータの値に対して得られた教師データおよび予め設定されている範囲内におけるエアコンに関する運転パラメータの値に対して得られている教師データを用いてニューラルネットワークの重みが学習される。
次に、この第4実施例について具体的に説明する。図20を参照すると、50は、エアコン本体、51はエアコン本体50内に配置された送風モータ、52はエアコン本体50内に配置された風向き調整モータ、53は気温を検出するための温度計、54は大気の湿度を検出するための湿度計、55は、エアコンの設置されている位置を検出するためのGPS、56は、図1に示す電子制御ユニット30と同様な構成を有する電子制御ユニットを夫々示す。図20に示されるように、温度計53により検出された気温、湿度計54により検出された大気の湿度およびGPS55によりを検出された位置情報が電子制御ユニット56に入力され、電子制御ユニット56からは最適なエアコンの風量を得るための送風モータ51の駆動信号および、最適なエアコンの風向きを得るための風向き調整モータ52の駆動信号が出力される。なお、エアコンの取り付けられている部屋の大きさは、例えば、電子制御ユニット56に手入力される。
図21は、この第4実施例において用いられているニューラルネットワークを示している。この第4実施例では、図21に示されるように、ニューラルネットワークの入力層 ( L=1) は4個のノードからなり、各ノードに、気温を示す入力値x1、湿度示す入力値x2、位置を示す入力値x3およびエアコンの取り付けられている部屋の大きさを示す入力値x4 が入力される。また、隠れ層(L=2、L=3)の層数は、1個又は任意の個数とすることができ、隠れ層(L=2、L=3)のノードの数も任意の個数とすることができる。また、この第4実施例では、出力層(L=4)が3個のノードからなり、各ノードからは、エアコンの風量を示す出力値y1、エアコンの風向きを示す出力値y2およびエアコンの運転時間を示す入力値y3が出力される。
一方、図22Aにおいて、A1とB1 との間、即ち、R1は気温の予め設定されている範囲(例えば、−5℃〜40℃)を示しており、A2とB2との間、即ち、R2は湿度の予め設定されている範囲(例えば、30%〜90%)を示しており、A3とB3との間、即ち、R3は位置(例えば、北緯20度と46度との間)の予め設定されている範囲を示しており、A4とB4 との間、即ち、R4はエアコンの取り付けられている部屋の大きさの予め設定されている範囲を示している。なお、図22Bも、図22Aと同様に、A1とB1 との間は気温の予め設定されている範囲を示しており、A2とB2との間は湿度の予め設定されている範囲を示しており、A3とB3との間は位置の予め設定されている範囲を示しており、A4とB4 との間はエアコンの取り付けられている部屋の大きさの予め設定されている範囲を示している。
この第4実施例でも、予め設定されている範囲Rn内の種々の入力値xn(n= 1,2,3、4)に対して、実測された最適なエアコンの風量、風向きおよび運転時間が教師データとして事前に求められており、即ち、予め設定されている範囲Rn内におけるエアコンに関する複数の種別の運転パラメータの値に対して実測により教師データが事前に求められており、これらエアコンに関する複数の種別の運転パラメータの値および教師データからニューラルネットワークの構造が決定され、各出力値y1、y2、y3と、エアコンに関する複数の種別の運転パラメータの値に対応した教師データとの差が小さくなるようにニューラルネットワークの重みが事前に学習される。この予め設定されている範囲Rn内におけるエアコンに関する複数の種別の運転パラメータの値に対して実測により事前に求められている教師データは電子制御ユニット56の記憶部に記憶される。
この第4実施例でも、事前学習において用いられたニューラルネットワークと同じ構造のニューラルネットワークを用い、学習が完了したときのニューラルネットワークの重みを用いて、車両運転中にオンボードで更に学習が行われる。図23は、このオンボードで行われる第4実施例の学習処理ルーチンを示しており、この学習処理ルーチンは一定時間毎の、例えば、一秒毎の割り込みによって実行される。なお、図23に示される学習処理ルーチンの各ステップにおいて行われる処理は、入力値の種別と入力値の個数、および出力値の種別と出力値の個数が異なる点を除くと、図12に示される学習処理ルーチンの各ステップにおいて行われる処理と同じである。
即ち、図23を参照すると、まず初めに、ステップ401において、電子制御ユニット56の記憶部に記憶されている学習済みの重みと、事前の学習において用いられていた教師データ、即ち、予め設定されている範囲Rn内におけるエアコンに関する複数の種別の運転パラメータの値に対して実測により事前に求められている教師データと、入力データの範囲、即ち、エアコンに関する複数の種別の運転パラメータの値の予め設定されている範囲を示す値An,Bn(n= 1,2,3、4)(図22A)が読み込まれる。この学習済みの重みは、重みの初期値として用いられる。次いで、ステップ402では、事前の学習において用いられていたニューラルネットワークの出力層の一つ前の隠れ層のノードの個数Kが読み込まれる。次いで、ステップ403に進んで、新たな入力値x、即ち、新たなエアコンに関する複数の種別の運転パラメータの値が取得され、この新たな入力値x、即ち、新たなエアコンに関する複数の種別の運転パラメータの値は、電子制御ユニット56の記憶部に記憶される。更に、ステップ403では、新たな入力値xに対するエアコンの風量、風向きおよび運転時間の実測値が教師データとして、電子制御ユニット56の記憶部に記憶される。即ち、ステップ403では、新たに取得されたエアコンに関する複数の種別の運転パラメータの値に対し実測により得られた教師データが電子制御ユニット56の記憶部に記憶される。
次いで、ステップ404では、新たな入力値xn、即ち、新たに取得されたエアコンに関する複数の種別の運転パラメータの値が、予め設定されている範囲Rn(AnとBnとの間)内にあるか否か、即ち、新たな入力値xnがAn以上であり、Bn以下であるか否かが判別される。新たな入力値xnが、予め設定されている範囲Rn内にあるときには、ステップ405に進んで、各入力値xn、即ち、新たに取得されたエアコンに関する複数の種別の運転パラメータの値がニューラルネットワークの入力層の対応するノードに入力され、ニューラルネットワークの出力層のノードから出力された出力値y1、y2、y3と、新たに取得されたエアコンに関する複数の種別の運転パラメータの値に対し実測により求められた教師データとに基づき、誤差逆伝播法を用いて、出力値y1、y2、y3と教師データとの差が小さくなるようにニューラルネットワークの重みが学習される。
一方、ステップ404において、新たな入力値xn、即ち、新たに取得されたエアコンに関する複数の種別の運転パラメータの値の内の少なくとも一つの種別の運転パラメータの値が、予め設定されている範囲Rn(AnとBnとの間)内にないと判別されたとき、例えば、図22Bにおいて気温を示す入力値x1が、B1からC1(B1<C1)までの予め設定されている範囲(B1〜C1)内にあるような場合、或いは図22Bにおいて位置を示す入力値x3が、C3からA3(C3<A3)までの予め設定されている範囲(C3〜A3)内にあるような場合には、ステップ406に進む。ステップ406では、最初に、新たな入力値xnの属する範囲(Bn〜Cn)或いは範囲(Cn〜An)内における新たな入力値xnに対する教師データの密度D(=教師データ個数/(Cn―Bn)、或いは教師データ個数/(An―Cn))が算出される。この教師データ密度Dの定義については、前述した通りである。ステップ406では、教師データ密度Dが算出されると、教師データ密度Dが予め定められたデータ密度D0よりも高くなったか否かが判別される。教師データ密度Dが予め定められたデータ密度D0よりも低い場合には処理サイクルを完了する。
一方、ステップ406において、教師データ密度Dが予め定められたデータ密度D0よりも高くなったと判別されたときにはステップ407に進む。この場合、D(=教師データ個数/(An―Cn))>D0 のときには、次式により追加ノード数αが算出される。
追加ノード数α=round{ (K/(Bn-An))・(An-Cn)}
一方、D(=教師データ個数/(Cn―Bn))>D0 のときには、次式により追加ノード数αが算出される。
追加ノード数α=round{ (K/(Bn-An))・(Cn-Bn)}
なお、上式において、Kはノードの個数を示しており、roundは四捨五入を意味している。
ステップ407において追加ノード数αが算出されると、ステップ408に進んで、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数Kが更新され、出力層の一つ前の隠れ層のノードの個数Kが、追加ノード数αだけ増大せしめられる(K←K+α)。このように、この第4実施例では、教師データの個数を運転パラメータの値の予め設定されている範囲を示す最大値及び最小値の差分値で除したデータ密度が増大すると、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数が増大される。即ち、この第4実施例では、教師データの個数を運転パラメータの値の予め設定されている範囲を示す最大値及び最小値の差分値で除したデータ密度の増大に応じて、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数が増大される。
ステップ408において出力層の一つ前の隠れ層のノードの個数Kが、追加ノード数αだけ増大せしめられる(K←K+α)と、ステップ409に進み、出力層の一つ前の隠れ層のノードの個数Kを増大させるようにニューラルネットワークが更新される。次いで、ステップ405に進む。ステップ405では、新たな入力値xに対して新たに得られた教師データも教師データに含めて、出力値y1、y2、y3と教師データとの差が小さくなるように、更新されたニューラルネットワークの重みが学習される。即ち、ステップ405では、新たに取得されたエアコンに関する複数の種別の運転パラメータの値に対し実測により得られた教師データ、および予め設定されている範囲Rn内におけるエアコンに関する複数の種別の運転パラメータの値に対して実測により事前に求められている教師データを用いて、予め設定されている範囲内および予め設定されている範囲外のエアコンに関する複数の種別の運転パラメータの値に応じて変化する出力値y1、y2、y3と、このエアコンに関する複数の種別の運転パラメータの値に対応した教師データとの差が小さくなるように、更新されたニューラルネットワークの重みが学習される。
図24および図25は、第4実施例の変形例を示している。この変形例では、エアコンに関する各種別の運転パラメータの値の予め設定されている範囲が複数個に区分けされている。即ち、図24におけるRw、Rx、Ry、Rzは、夫々気温、湿度、位置およびエアコンの取り付けられている部屋の大きさの予め設定されている範囲を示しており、図24に示されるように、気温、湿度、位置およびエアコンの取り付けられている部屋の大きさに対し予め設定されている範囲が複数個に区分けされている。なお、図24において、W1、W2・・・Wn, X1、X2・・・Xn, Y1、Y2・・・Yn, Z1、Z2・・・Znは、夫々各種別の運転パラメータの値の区分け範囲を示している。
更に、この変形例では、各種別の運転パラメータの値の区分けされた各区分け範囲の組み合わせにより画定される複数の区分け領域〔Wi,Xj,Yk、Zl〕(i=1,2・・・n、j=1,2・・・n、k=1,2・・・n、l=1,2・・・n)が予め設定されており、区分け領域〔Wi,Xj,Yk、Zl〕毎に、夫々、独立したニューラルネットワークが作成されている。これらのニューラルネットワークは、図22に示される構造を有する。この場合、隠れ層(L=3)のノードの数は、ニューラルネットワーク毎に異なり、以下、区分け領域〔Wi,Xj,Yk、Zl〕におけるニューラルネットワークの出力層の一つ前の隠れ層のノードの個数をKi,j,k,lで表す。この隠れ層のノードの個数Ki,j,k,l は、各区分け領域〔Wi,Xj,Yk、Zl〕内での入力値の変化に対する教師データの変化の複雑さに応じて、事前に設定されている。
この変形例では、予め設定されている範囲Rw、Rx、Ry、Rz 内に形成されている各区分け領域〔Wi,Xj,Yk、Zl〕内の種々の入力値x1、x2,x3,x4、即ち、気温、湿度、位置およびエアコンの取り付けられている部屋の大きさに対して実測されたエアコンの風量、風向きおよび運転時間が教師データとして事前に求められており、即ち、予め設定されている範囲Rw、Rx、Ry、Rz内におけるエアコンに関する複数の種別の運転パラメータの値に対して実測により教師データが事前に求められており、これらエアコンに関する複数の種別の運転パラメータの値および教師データから、隠れ層のノードの個数Ki,j,k,lも含めて各区分け領域〔Wi,Xj,Yk、Zl〕に対するニューラルネットワークの構造が決定され、出力値y1、y2、y3と対応する教師データとの差が小さくなるように、各区分け領域〔Wi,Xj,Yk、Zl〕のニューラルネットワークの重みが事前に学習される。
従って、この変形例では、この事前に学習の行われた区分け領域〔Wi,Xj,Yk、Zl〕を、以下、学習済み区分け領域〔Wi,Xj,Yk、Zl〕と称することもある。なお、この予め設定されている範囲Rw、Rx、Ry、Rz内におけるエアコンに関する複数の種別の運転パラメータの値に対して実測により事前に求められている教師データは電子制御ユニット56の記憶部に記憶される。この変形例でも、各区分け領域〔Wi,Xj,Yk、Zl〕について、事前学習において用いられたニューラルネットワークと同じ構造のニューラルネットワークを用い、学習が完了したときのニューラルネットワークの重みを用いて、車両運転中にオンボードで更に学習が行われる。図25は、このオンボードで行われる変形例の学習処理ルーチンを示しており、この学習処理ルーチンは一定時間毎の、例えば、一秒毎の割り込みによって実行される。
図25を参照すると、まず初めに、ステップ500において、電子制御ユニット56の記憶部に記憶されている学習済みの重みと、事前の学習において用いられていた教師データ、即ち、予め設定されている範囲Rw、Rx、Ry、Rz 内におけるエアコンに関する複数の種別の運転パラメータの値に対して実測により事前に求められている教師データと、各学習済み区分け領域〔Wi,Xj,Yk、Zl〕が読み込まれる。この学習済みの重みは、重みの初期値として用いられる。次いで、ステップ501では、各学習済み区分け領域〔Wi,Xj,Yk、Zl〕に対し事前の学習において用いられていた出力層の一つ前の隠れ層のノードの個数Ki,j,k,l が読み込まれる。次いで、ステップ502に進んで、新たな入力値x1、x2、x3,x4、即ち、気温、湿度、位置およびエアコンの取り付けられている部屋の大きさが取得され、この新たな入力値x1、x2、x3,x4、即ち、新たなエアコンに関する複数の種別の運転パラメータの値は、電子制御ユニット56の記憶部に記憶される。更に、ステップ502では、新たな入力値x1、x2、x3,x4対するエアコンの風量、風向きおよび運転時間が教師データとして、電子制御ユニット56の記憶部に記憶される。即ち、ステップ502では、新たに取得されたエアコンに関する複数の種別の運転パラメータの値に対し実測により得られた教師データが電子制御ユニット56の記憶部に記憶される。
次いで、ステップ503では、新たな入力値x1、x2, x3,x4が、学習済み区分け領域〔Wi,Xj,Yk、Zl〕内にあるか否かが、即ち、新たに取得されたエアコンに関する複数の種別の運転パラメータの値が予め設定されている範囲Rw、Rx、Ry、Rz 内にあるか否かが判別される。新たな入力値x1、x2,x3,x4 が、学習済み区分け領域Rw、Rx、Ry、Rz内にあるとき、即ち、新たに取得されたエアコンに関する複数の種別の運転パラメータの値が予め設定されている範囲Rw、Rx、Ry、Rz 内あるときには、ステップ504に進んで、新たな入力値x1、x2、x3,x4、即ち、新たに取得されたエアコンに関する複数の種別の運転パラメータの値 が、新たに取得されたエアコンに関する複数の種別の運転パラメータの値の属する学習済み区分け領域〔Wi,Xj,Yk、Zl〕のニューラルネットワークの入力層の各ノードに入力され、ニューラルネットワークの出力層のノードから出力された出力値y1、y2、y3と、新たに取得されたエアコンに関する複数の種別の運転パラメータの値に対し実測により求められた教師データとに基づき、誤差逆伝播法を用いて、出力値y1、y2、y3と教師データとの差が小さくなるように、新たに取得された内燃機関に関する複数の種別の運転パラメータの値の属する学習済み区分け領域〔Wi,Xj,Yk、Zl〕のニューラルネットワークの重みが更に学習される。
一方、ステップ503において、新たな入力値x1、x2, x3,x4が、学習済み区分け領域〔Wi,Xj,Yk、Zl〕内にないと判別されたときには、ステップ505に進んで、初めに、予め設定された範囲Rw、Rx、Ry、Rz外に、新たな入力値x1、x2, x3,x4により画定される未学習領域が設定される。例えば、新たな入力値x2, x3,x4が、対応する予め設定された範囲Rx、Ry、Rz内にあり、新たな入力値x1が対応する予め設定された範囲Rw内にないと判別されたときには、新たな入力値x1の属する範囲をWaとすると、新たな入力値x1、x2, x3,x4により画定される未学習領域〔Wa,Xj,Yk、Zl〕が設定される。また、新たな入力値x3,x4が、対応する予め設定された範囲Ry、Rz内にあり、新たな入力値x1,x2が対応する予め設定された範囲Rw、Rx内にないと判別されたときには、新たな入力値x1の属する範囲をWaとし、新たな入力値x2の属する範囲をXbとすると、新たな入力値x1、x2, x3,x4により画定される未学習領域〔Wa,Xb,Yk、Zl〕が設定される。
次いで、ステップ505では、未学習領域〔Xa,Yb〕に対する新たなニューラルネットワークが作成される。ステップ505において、新たなニューラルネットワークが作成されると、ステップ504に進む。ステップ504では、未学習領域について、出力値y1、y2、y3と教師データとの差が小さくなるように、未学習領域に対し作成された新たなニューラルネットワークの重みが学習される。
図26から図33は、本発明による機械学習装置を、2次電池の劣化度の推定に適用した場合の第5実施例を示している。この実施例では、気温、2次電池の温度、2次電池の放電時間および2次電池の単位時間当たりの放電エネルギから、2次電池の劣化度が検出される。この場合、2次電池の使用条件および使用態様の範囲、即ち、気温、2次電池の温度、2次電池の放電時間および2次電池の単位時間当たりの放電エネルギ等の2次電池の運転パラメータの値の使用範囲は、2次電池の種類に応じて予め想定することができ、従って、通常は、2次電池の運転パラメータの値の予め設定さている範囲に対し、ニューラルネットワークの出力値と、実測された2次電池の劣化度との差が小さくなるようにニューラルネットワークの重みが予め学習される。
しかしながら、この場合にも、2次電池の運転パラメータの値が、予め設定さている範囲外となることがあり、この場合、予め設定さている範囲外に対しては、実際の値に基づく学習が行われていないために、ニューラルネットワークを用いて演算された出力値が、実際の値から大きく乖離した値になってしまうことになる、そこでこの実施例においても、新たに取得された2次電池に関する運転パラメータの値が予め設定されている範囲外であるときには、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数を増大させるか、又は、ニューラルネットワークの個数を増大して、新たに取得された2次電池に関する運転パラメータの値に対して得られた教師データおよび予め設定されている範囲内における2次電池に関する運転パラメータの値に対して得られている教師データを用いてニューラルネットワークの重みが学習される。
次に、この第5実施例について具体的に説明する。図26を参照すると、60は、2次電池、61は電動モータ、62は電動モータ61の駆動制御装置、63は2次電池60の出力端子間電圧を検出するための電圧計、64は2次電池60から駆動制御装置62を介して電動モータ61へ供給される電流を検出するための電流計、65は気温を検出するための温度計、66は2次電池60の温度を検出するための温度センサ、67は、図1に示す電子制御ユニット30と同様な構成を有する電子制御ユニットを夫々示す。図26に示されるように、電流計53により検出された電動モータ61への供給電流、電圧計64により検出された2次電池60の出力端子間電圧、温度計65により検出された気温および温度センサ66により検出された2次電池60の温度が電子制御ユニット56に入力され、電子制御ユニット56内では2次電池60の劣化度の推定値が算出される。なお、電子制御ユニット56内では、電流計64の検出値に基づき2次電池60の放電時間が求められており、電流計64の検出値および電圧計63の検出値に基づき2次電池60の単位時間当たりの放電エネルギ(電流・電圧)が求められている。
図27は、この第5実施例において用いられているニューラルネットワークを示している。この第5実施例では、図27に示されるように、ニューラルネットワークの入力層 ( L=1) は4個のノードからなり、各ノードに、気温を示す入力値x1、2次電池60の温度示す入力値x2、2次電池60の放電時間x3および2次電池60の単位時間当たりの放電エネルギを示す入力値x4 が入力される。また、隠れ層(L=2、L=3)の層数は、1個又は任意の個数とすることができ、隠れ層(L=2、L=3)のノードの数も任意の個数とすることができる。また、この第4実施例では、出力層(L=4)のノードは1個とされ、このノードからは、2次電池20の劣化度を示す出力値yが出力される。
一方、図28Aにおいて、A1とB1 との間、即ち、R1は気温の予め設定されている範囲(例えば、−5℃〜40℃)を示しており、A2とB2との間、即ち、R2は2次電池60の温度の予め設定されている範囲(例えば、−40℃〜40℃)を示しており、A3とB3との間、即ち、R3は2次電池60の放電時間の予め設定されている範囲を示しており、A4とB4 との間、即ち、R4は2次電池60の単位時間当たりの放電エネルギの予め設定されている範囲を示している。なお、図28Bも、図28Aと同様に、A1とB1 との間は気温の予め設定されている範囲を示しており、A2とB2との間は2次電池60の温度の予め設定されている範囲を示しており、A3とB3との間は2次電池60の放電時間の予め設定されている範囲を示しており、A4とB4 との間は2次電池60の単位時間当たりの放電エネルギの予め設定されている範囲を示している。
ここで、気温、2次電池60の温度、2次電池60の放電時間および2次電池60の単位時間当たりの放電エネルギと、2次電池60の劣化度の関係について簡単に説明する。さて、2次電池60は劣化するほど内部抵抗が高くなり、従って、内部抵抗の変化から2次電池60の劣化度を推定することができる。しかしながら、実際には、内部抵抗を検出するのは困難である。一方、放電電流が一定の場合、内部抵抗が高くなるほど2次電池60の発熱量が増大し、従って、内部抵抗が高くなるほど、即ち、2次電池60の劣化するほど、2次電池60の温度が高くなる。従って、2次電池60の温度上昇量に基づいて、2次電池60の劣化度を推定することができる。この場合、2次電池60の温度上昇量は気温の影響を受け、また、2次電池60の放電時間および2次電池60の単位時間当たりの放電エネルギに左右される。従って、2次電池60の劣化度は、気温、2次電池60の温度、2次電池60の放電時間および2次電池60の単位時間当たりの放電エネルギから求まり、従って、気温、2次電池60の温度、2次電池60の放電時間および2次電池60の単位時間当たりの放電エネルギから、2次電池60の劣化度を推定できることになる。
一方、2次電池60が劣化すると、2次電池60への充電量が減少する。この場合、2次電池60への充電が完了した直後に2次電池60の回路を閉ループにしたとき、2次電池60の出力端子間には、2次電池60への充電量に比例した電圧が現れる。即ち、2次電池60への充電が完了した直後に電圧計64により検出された2次電池60の出力端子間電圧は、2次電池60への充電量に比例している。従って、2次電池60への充電が完了した直後の電圧計64の検出電圧から2次電池60の劣化度を検出することができる。従って、この第5実施例では、2次電池60への充電が完了した直後の電圧計64の検出電圧から検出された2次電池60の劣化度を、出力値yの教師データとして用いている。
次に、図29および図30を参照しつつ、電子制御ユニット67内において実行されている2次電池60の放電時間等の算出ルーチンと、教師データの取得処理ルーチンについて説明する。算出ルーチンを示す図29を参照すると、ステップ600では、電流計64の出力値から2次電池60の放電時間が算出される。次いで、ステップ601では、電流計64の出力値および電圧計63の出力値から2次電池60の単位時間当たりの放電エネルギが算出される。
一方、教師データの取得処理ルーチンを示す図30を参照すると、まず初めに、ステップ610において、2次電池60への充電処理が行われているか否かが判別される。2次電池60への充電処理が行われていないときには処理サイクルを完了する。これに対し、2次電池60への充電処理が行われているときには、ステップ611に進んで2次電池60への充電が完了したか否かが判別される。2次電池60への充電が完了したと判別されたときには、ステップ612に進んで、教師データを要求するときにセットされる教師データ要求フラグがセットされているか否かが判別される。この教師データ要求フラグについては後述する。教師データ要求フラグがセットされていないときには処理サイクルを完了する。これに対し、教師データ要求フラグがセットされているときには、ステップ613に進んで、電圧計64の検出電圧から2次電池60の劣化度が検出される。次いで、ステップ614に進んで、追加学習フラグがセットされる。
この第5実施例でも、予め設定されている範囲Rn内の種々の入力値xn(n= 1,2,3、4)、即ち、気温、2次電池60の温度、2次電池60の放電時間および2次電池60の単位時間当たりの放電エネルギに対する2次電池60の劣化度が教師データとして事前に求められており、即ち、予め設定されている範囲Rn内における2次電池60に関する複数の種別の運転パラメータの値に対して実測により教師データが事前に求められており、これら2次電池60に関する複数の種別の運転パラメータの値および教師データからニューラルネットワークの構造が決定され、出力値yと、2次電池60に関する複数の種別の運転パラメータの値に対応した教師データとの差が小さくなるようにニューラルネットワークの重みが事前に学習される。この予め設定されている範囲Rn内における2次電池60に関する複数の種別の運転パラメータの値に対して実測により事前に求められている教師データは電子制御ユニット67の記憶部に記憶される。
この第5実施例でも、事前学習において用いられたニューラルネットワークと同じ構造のニューラルネットワークを用い、学習が完了したときのニューラルネットワークの重みを用いて、車両運転中にオンボードで更に学習が行われる。図31は、このオンボードで行われる第5実施例の学習処理ルーチンを示しており、この学習処理ルーチンは一定時間毎の、例えば、一秒毎の割り込みによって実行される。
即ち、図31を参照すると、まず初めに、ステップ700において、電子制御ユニット67の記憶部に記憶されている学習済みの重みと、事前の学習において用いられていた教師データ、即ち、予め設定されている範囲Rn内における2次電池60に関する複数の種別の運転パラメータの値に対して実測により事前に求められている教師データと、入力データの範囲、即ち、2次電池60に関する複数の種別の運転パラメータの値の予め設定されている範囲を示す値An,Bn(n= 1,2,3、4)(図28A)が読み込まれる。この学習済みの重みは、重みの初期値として用いられる。次いで、ステップ701では、事前の学習において用いられていたニューラルネットワークの出力層の一つ前の隠れ層のノードの個数Kが読み込まれる。次いで、ステップ702では、追加学習フラグがセットされているか否かが判別される。追加学習フラグがセットされていないときにはステップ703に進む。
ステップ703では、新たな入力値x、即ち、新たな2次電池60に関する複数の種別の運転パラメータの値が取得され、この新たな入力値x、即ち、新たな2次電池60に関する複数の種別の運転パラメータの値は、電子制御ユニット67の記憶部に記憶される。
次いで、ステップ704では、新たな入力値xn、即ち、新たに取得された2次電池60に関する複数の種別の運転パラメータの値が、予め設定されている範囲Rn(AnとBnとの間)内にあるか否か、即ち、新たな入力値xnがAn以上であり、Bn以下であるか否かが判別される。新たな入力値xnが、予め設定されている範囲Rn内にあるときには、ステップ705に進んで、各入力値xn、即ち、新たに取得された2次電池60に関する複数の種別の運転パラメータの値がニューラルネットワークの入力層の対応するノードに入力され、ニューラルネットワークの出力層のノードから出力された出力値yと、新たに取得された2次電池60に関する複数の種別の運転パラメータの値に対し実測により求められた教師データとに基づき、誤差逆伝播法を用いて、出力値yと教師データとの差が小さくなるようにニューラルネットワークの重みが学習される。
一方、ステップ704において、新たな入力値xn、即ち、新たに取得された2次電池60に関する複数の種別の運転パラメータの値の内の少なくとも一つの種別の運転パラメータの値が、予め設定されている範囲Rn(AnとBnとの間)内にないと判別されたとき、例えば、図28Bにおいて気温を示す入力値x1が、B1からC1(B1<C1)までの予め設定されている範囲(B1〜C1)内にあるような場合、或いは図28Bにおいて2次電池60の放電時間を示す入力値x3が、C3からA3(C3<A3)までの予め設定されている範囲(C3〜A3)内にあるような場合には、ステップ706に進む。ステップ706では、教師データ要求フラグがセットされ、このとき取得された新たな入力値xnが、追加学習に使用するための新たな入力値xnとして記憶される。次いで、処理サイクルを完了する。
教師データ要求フラグがセットされると、図30の教師データ取得処理ルーチンからわかるように、2次電池60の充電が完了したときに、2次電池60の劣化度が検出され、この2次電池60の劣化度が、追加学習に使用するための教師データとして記憶される。次いで、追加学習フラグがセットされる。さて、ステップ706において追加学習フラグがセットされると、次の処理サイクルでは、ステップ702からステップ707に進む。ステップ707では、追加学習に使用するために記憶されている新たな入力値xnと、追加学習に使用するために記憶されている教師データとが記憶部から読み出され、この新たな入力値xnの属する範囲(Bn〜Cn)或いは範囲(Cn〜An)内における新たな入力値xnに対する教師データの密度D(=教師データ個数/(Cn―Bn)、或いは教師データ個数/(An―Cn))が算出される。この教師データ密度Dの定義については、前述した通りである。ステップ707では、教師データ密度Dが算出されると、教師データ密度Dが予め定められたデータ密度D0よりも高くなったか否かが判別される。教師データ密度Dが予め定められたデータ密度D0よりも低い場合には処理サイクルを完了する。
一方、ステップ707において、教師データ密度Dが予め定められたデータ密度D0よりも高くなったと判別されたときにはステップ708に進む。この場合、D(=教師データ個数/(An―Cn))>D0 のときには、次式により追加ノード数αが算出される。
追加ノード数α=round{ (K/(Bn-An))・(An-Cn)}
一方、D(=教師データ個数/(Cn―Bn))>D0 のときには、次式により追加ノード数αが算出される。
追加ノード数α=round{ (K/(Bn-An))・(Cn-Bn)}
なお、上式において、Kはノードの個数を示しており、roundは四捨五入を意味している。
ステップ708において追加ノード数αが算出されると、ステップ709に進んで、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数Kが更新され、出力層の一つ前の隠れ層のノードの個数Kが、追加ノード数αだけ増大せしめられる(K←K+α)。このように、この第5実施例では、教師データの個数を運転パラメータの値の予め設定されている範囲を示す最大値及び最小値の差分値で除したデータ密度が増大すると、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数が増大される。即ち、この第5実施例では、教師データの個数を運転パラメータの値の予め設定されている範囲を示す最大値及び最小値の差分値で除したデータ密度の増大に応じて、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数が増大される。
ステップ709において出力層の一つ前の隠れ層のノードの個数Kが、追加ノード数αだけ増大せしめられる(K←K+α)と、ステップ710に進み、出力層の一つ前の隠れ層のノードの個数Kを増大させるようにニューラルネットワークが更新される。次いで、ステップ705に進む。ステップ705では、新たな入力値xに対して新たに得られた教師データも教師データに含めて、出力値yと教師データとの差が小さくなるように、更新されたニューラルネットワークの重みが学習される。即ち、ステップ705では、新たに取得された2次電池60に関する複数の種別の運転パラメータの値に対し実測により得られた教師データ、および予め設定されている範囲Rn内における2次電池60に関する複数の種別の運転パラメータの値に対して実測により事前に求められている教師データを用いて、予め設定されている範囲内および予め設定されている範囲外の2次電池60に関する複数の種別の運転パラメータの値に応じて変化する出力値yと、この2次電池60に関する複数の種別の運転パラメータの値に対応した教師データとの差が小さくなるように、更新されたニューラルネットワークの重みが学習される。
図32および図33は、第5実施例の変形例を示している。この変形例では、2次電池60に関する各種別の運転パラメータの値の予め設定されている範囲が複数個に区分けされている。即ち、図32におけるRw、Rx、Ry、Rzは、夫々気温、2次電池60の温度、2次電池60の放電時間および2次電池60の単位時間当たりの放電エネルギの予め設定されている範囲を示しており、図24に示されるように、気温、2次電池60の温度、2次電池60の放電時間および2次電池60の単位時間当たりの放電エネルギの予め設定されている範囲が複数個に区分けされている。なお、図32において、W1、W2・・・Wn, X1、X2・・・Xn, Y1、Y2・・・Yn, Z1、Z2・・・Znは、夫々各種別の運転パラメータの値の区分け範囲を示している。
更に、この変形例では、各種別の運転パラメータの値の区分けされた各区分け範囲の組み合わせにより画定される複数の区分け領域〔Wi,Xj,Yk、Zl〕(i=1,2・・・n、j=1,2・・・n、k=1,2・・・n、l=1,2・・・n)が予め設定されており、各区分け領域〔Wi,Xj,Yk、Zl〕毎に、夫々、独立したニューラルネットワークが作成されている。これらのニューラルネットワークは、図27に示される構造を有する。この場合、隠れ層(L=3)のノードの数は、ニューラルネットワーク毎に異なり、以下、区分け領域〔Wi,Xj,Yk、Zl〕におけるニューラルネットワークの出力層の一つ前の隠れ層のノードの個数をKi,j,k,lで表す。この隠れ層のノードの個数Ki,j,k,l は、各区分け領域〔Wi,Xj,Yk、Zl〕内での入力値の変化に対する教師データの変化の複雑さに応じて、事前に設定されている。
この変形例では、2次電池60に関する複数の種別の運転パラメータの値の予め設定されている範囲Rw、Rx、Ry、Rz 内に形成されている各区分け領域〔Wi,Xj,Yk、Zl〕内の種々の入力値x1、x2,x3,x4、即ち、気温、2次電池60の温度、2次電池60の放電時間および2次電池60の単位時間当たりの放電エネルギに対して実測された2次電池60の劣化度が教師データとして事前に求められており、即ち、予め設定されている範囲Rw、Rx、Ry、Rz内における2次電池60に関する複数の種別の運転パラメータの値に対して実測により教師データが事前に求められており、これら2次電池60に関する複数の種別の運転パラメータの値および教師データから、隠れ層のノードの個数Ki,j,k,lも含めて各区分け領域〔Wi,Xj,Yk、Zl〕に対するニューラルネットワークの構造が決定され、出力値y1、y2、y3と対応する教師データとの差が小さくなるように、各区分け領域〔Wi,Xj,Yk、Zl〕のニューラルネットワークの重みが事前に学習される。
従って、この変形例では、この事前に学習の行われた区分け領域〔Wi,Xj,Yk、Zl〕を、以下、学習済み区分け領域〔Wi,Xj,Yk、Zl〕と称することもある。なお、この予め設定されている範囲Rw、Rx、Ry、Rz内における2次電池60に関する複数の種別の運転パラメータの値に対して実測により事前に求められている教師データは電子制御ユニット56の記憶部に記憶される。この変形例でも、各区分け領域〔Wi,Xj,Yk、Zl〕について、事前学習において用いられたニューラルネットワークと同じ構造のニューラルネットワークを用い、学習が完了したときのニューラルネットワークの重みを用いて、車両運転中にオンボードで更に学習が行われる。図33は、このオンボードで行われる変形例の学習処理ルーチンを示しており、この学習処理ルーチンは一定時間毎の、例えば、一秒毎の割り込みによって実行される。
図33を参照すると、まず初めに、ステップ800において、電子制御ユニット56の記憶部に記憶されている学習済みの重みと、事前の学習において用いられていた教師データ、即ち、予め設定されている範囲Rw、Rx、Ry、Rz 内における2次電池60に関する複数の種別の運転パラメータの値に対して実測により事前に求められている教師データと、各学習済み区分け領域〔Wi,Xj,Yk、Zl〕が読み込まれる。この学習済みの重みは、重みの初期値として用いられる。次いで、ステップ801では、各学習済み区分け領域〔Wi,Xj,Yk、Zl〕に対し事前の学習において用いられていた出力層の一つ前の隠れ層のノードの個数Ki,j,k,l が読み込まれる。次いで、ステップ802では、追加学習フラグがセットされているか否かが判別される。追加学習フラグがセットされていないときにはステップ803に進む。
ステップ803では、新たな入力値x1、x2、x3,x4、即ち、気温、2次電池60の温度、2次電池60の放電時間および2次電池60の単位時間当たりの放電エネルギが取得され、この新たな入力値x1、x2、x3,x4、即ち、新たな2次電池60に関する複数の種別の運転パラメータの値は、電子制御ユニット56の記憶部に記憶される。
次いで、ステップ804では、新たな入力値x1、x2, x3,x4が、学習済み区分け領域〔Wi,Xj,Yk、Zl〕内にあるか否かが、即ち、新たに取得された2次電池60に関する複数の種別の運転パラメータの値が予め設定されている範囲Rw、Rx、Ry、Rz 内にあるか否かが判別される。新たな入力値x1、x2,x3,x4 が、学習済み区分け領域Rw、Rx、Ry、Rz内にあるとき、即ち、新たに取得された2次電池60に関する複数の種別の運転パラメータの値が予め設定されている範囲Rw、Rx、Ry、Rz 内あるときには、ステップ805に進んで、入力値x1、x2、x3,x4、即ち、新たに取得された2次電池60に関する複数の種別の運転パラメータの値 が、新たに取得された2次電池60に関する複数の種別の運転パラメータの値の属する学習済み区分け領域〔Wi,Xj,Yk、Zl〕のニューラルネットワークの入力層の各ノードに入力され、ニューラルネットワークの出力層のノードから出力された出力値yと、新たに取得された2次電池60に関する複数の種別の運転パラメータの値に対し実測により求められた教師データとに基づき、誤差逆伝播法を用いて、出力値yと教師データとの差が小さくなるように、新たに取得された2次電池60に関する複数の種別の運転パラメータの値の属する学習済み区分け領域〔Wi,Xj,Yk、Zl〕のニューラルネットワークの重みが更に学習される。
一方、ステップ804において、新たな入力値x1、x2, x3,x4が、学習済み区分け領域〔Wi,Xj,Yk、Zl〕内にないと判別されたときには、ステップ806に進む。ステップ806では、教師データ要求フラグがセットされ、このとき取得された新たな入力値xnが、追加学習に使用するための新たな入力値xnとして記憶される。次いで、処理サイクルを完了する。
教師データ要求フラグがセットされると、図30の教師データ取得処理ルーチンからわかるように、2次電池60の充電が完了したときに、2次電池60の劣化度が検出され、この2次電池60の劣化度が、追加学習に使用するための教師データとして記憶される。次いで、追加学習フラグがセットされる。さて、ステップ806において追加学習フラグがセットされると、次の処理サイクルでは、ステップ802からステップ807に進む。ステップ807では、追加学習に使用するために記憶されている新たな入力値xnと、追加学習に使用するために記憶されている教師データとが記憶部から読み出され、予め設定された範囲Rw、Rx、Ry、Rz外に、追加学習に使用するために記憶されている新たな入力値x1、x2, x3,x4により画定される未学習領域が設定される。例えば、この新たな入力値x2, x3,x4が、対応する予め設定された範囲Rx、Ry、Rz内にあり、新たな入力値x1が対応する予め設定された範囲Rw内にないと判別されたときには、新たな入力値x1の属する範囲をWaとすると、新たな入力値x1、x2, x3,x4により画定される未学習領域〔Wa,Xj,Yk、Zl〕が設定される。また、新たな入力値x3,x4が、対応する予め設定された範囲Ry、Rz内にあり、新たな入力値x1,x2が対応する予め設定された範囲Rw、Rx内にないと判別されたときには、新たな入力値x1の属する範囲をWaとし、新たな入力値x2の属する範囲をXbとすると、新たな入力値x1、x2, x3,x4により画定される未学習領域〔Wa,Xb,Yk、Zl〕が設定される。
次いで、ステップ807では、未学習領域に対する新たなニューラルネットワークが作成される。ステップ807において、新たなニューラルネットワークが作成されると、ステップ805に進む。ステップ805では、未学習領域について、出力値yと、追加学習に使用するために記憶されている教師データとの差が小さくなるように、未学習領域に対し作成された新たなニューラルネットワークの重みが学習される。
以上の説明から、本発明による実施例では、ニューラルネットワークを用い、機械の運転パラメータの値に対する出力値を出力するための機械学習装置において、この機械に関する特定の種別の運転パラメータの値の範囲が予め設定されていると共に、この機械に関する特定の種別の運転パラメータの値の範囲に応じたニューラルネットワークの隠れ層のノードの個数が予め設定されている。新たに取得されたこの機械に関する特定の種別の運転パラメータの値が予め設定されている範囲外であるときには、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数を増大させ、新たに取得されたこの機械に関する特定の種別の運転パラメータの値に対して実測により得られた教師データおよび予め設定されている範囲内におけるこの機械の運転パラメータの値に対して実測により得られた教師データを用いてニューラルネットワークの重みが学習される。重みの学習されたニューラルネットワークを用いてこの機械に関する特定の種別の運転パラメータの値に対する出力値が出力される。
この場合、本発明による実施例では、機械学習装置が電子制御ユニットを具備している。この電子制御ユニットが、上述の機械に関する特定の種別の運転パラメータの値を取得するパラメータ値取得部と、入力層、隠れ層および出力層からなるニューラルネットワークを用いて演算を行う演算部と、記憶部とを具備しており、上述の機械に関する特定の種別の運転パラメータの値が入力層に入力され、上述の機械に関する特定の種別の運転パラメータの値に応じて変化する出力値が出力層から出力される。上述の機械に関する特定の種別の運転パラメータの値の範囲が予め設定されていると共に、上述の機械に関する特定の種別の運転パラメータの値の範囲に応じたニューラルネットワークの隠れ層のノードの個数が予め設定されており、予め設定されている範囲内における上述の機械に関する特定の種別の運転パラメータの値に対して実測により事前に求められている教師データが記憶部に記憶されている。新たに取得された上述の機械に関する特定の種別の運転パラメータの値が予め設定されている範囲内であるときには、新たに取得された上述の機械に関する特定の種別の運転パラメータの値に対し実測により得られた教師データを用いて、演算部により、新たに取得された上述の機械に関する特定の種別の運転パラメータの値に応じて変化する出力値と新たに取得された上述の機械に関する特定の種別の運転パラメータの値に対し実測により得られた教師データとの差が小さくなるようにニューラルネットワークの重みが学習される。パラメータ値取得部により新たに取得された上述の機械に関する特定の種別の運転パラメータの値が予め設定されている範囲外であるときには、新たに取得された上述の機械に関する特定の種別の運転パラメータの値に対し実測により得られた教師データの個数の増大、又は、教師データの個数を、運転パラメータの値の予め設定されている範囲を示す最大値及び最小値の差分値で除したデータ密度の増大に応じて、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数が増大されると共に、新たに取得された上述の機械に関する特定の種別の運転パラメータの値に対し実測により得られた教師データおよび事前に求められている教師データを用いて、演算部により、予め設定されている範囲内および予め設定されている範囲外の上述の機械に関する特定の種別の運転パラメータの値に応じて変化する出力値と上述の機械に関する特定の種別の運転パラメータの値に対応した教師データとの差が小さくなるようにニューラルネットワークの重みが学習される。重みの学習されたニューラルネットワークを用いて上述の機械に関する特定の種別の運転パラメータの値に対する出力値が出力される。
また、この場合、本発明による実施例では、電子制御ユニットが、上述の機械に関する特定の種別の運転パラメータの値を取得するパラメータ値取得部と、入力層、隠れ層および出力層からなるニューラルネットワークを用いて演算を行う演算部と、記憶部とを具備しており、上述の機械に関する特定の種別の運転パラメータの値が入力層に入力され、上述の機械に関する特定の種別の運転パラメータの値に応じて変化する複数の出力値が出力層から出力される。上述の機械に関する特定の種別の運転パラメータの値の範囲が予め設定されていると共に、上述の機械に関する特定の種別の運転パラメータの値の範囲に応じたニューラルネットワークの隠れ層のノードの個数が予め設定されており、予め設定されている範囲内における上述の機械に関する特定の種別の運転パラメータの値に対して実測により事前に求められている教師データが記憶部に記憶されている。パラメータ値取得部により新たに取得された上述の機械の運転パラメータの値が予め設定されている範囲内であるときには、新たに取得された上述の機械に関する特定の種別の運転パラメータの値に対し実測により得られた教師データを用いて、演算部により、上述の機械に関する特定の種別の運転パラメータの値に応じて変化する複数の出力値と上述の機械に関する特定の種別の運転パラメータの値に対応した教師データとの差が小さくなるようにニューラルネットワークの重みが学習される。パラメータ値取得部により新たに取得された上述の機械に関する特定の種別の運転パラメータの値が予め設定されている範囲外であるときには、新たに取得された上述の機械に関する特定の種別の運転パラメータの値に対し実測により得られた教師データの個数の増大、又は、教師データの個数を、予め設定されている範囲を示す最大値及び最小値の差分値で除したデータ密度の増大に応じて、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数を増大させると共に、予め設定されている範囲内および予め設定されている範囲外の新たに取得された上述の機械に関する特定の種別の運転パラメータの値に対し実測により得られた教師データおよび事前に求められている教師データを用いて、演算部により、上述の機械に関する特定の種別の運転パラメータの値に応じて変化する複数の出力値と上述の機械に関する特定の種別の運転パラメータの値に対応した教師データとの差が小さくなるようにニューラルネットワークの重みが学習される。重みの学習されたニューラルネットワークを用いて上述の機械に関する特定の種別の運転パラメータの値に対する複数の出力値が出力される。
一方、本発明による実施例では、ニューラルネットワークを用い、機械の運転パラメータの値に対する出力値を出力するための機械学習装置において、この機械に関する複数の種別の運転パラメータの値の範囲が予め設定されていると共に、この機械に関する複数の種別の運転パラメータの値の範囲に応じたニューラルネットワークの隠れ層のノードの個数が予め設定されており、新たに取得されたこの機械に関する複数の種別の運転パラメータの値が予め設定されている範囲外であるときには、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数を増大させ、新たに取得されたこの機械に関する複数の種別の運転パラメータの値に対して実測により得られた教師データおよび予め設定されている範囲内におけるこの機械の運転パラメータの値に対して実測により得られた教師データを用いてニューラルネットワークの重みが学習される。重みの学習されたニューラルネットワークを用いてこの機械に関する複数の種別の運転パラメータの値に対する出力値が出力される。
この場合、本発明による実施例では、機械学習装置が電子制御ユニットを具備しており、この電子制御ユニットが、上述の機械に関する複数の種別の運転パラメータの値を取得するパラメータ値取得部と、入力層、隠れ層および出力層からなるニューラルネットワークを用いて演算を行う演算部と、記憶部とを具備しており、上述の機械に関する複数の種別の運転パラメータの値が入力層に入力され、上述の機械に関する複数の種別の運転パラメータの値に応じて変化する出力値が出力層から出力される。上述の機械に関する複数の種別の運転パラメータの夫々について、各種別の運転パラメータの値の範囲が予め設定されていると共に、上述の機械に関する複数の種別の運転パラメータの値の範囲に応じたニューラルネットワークの隠れ層のノードの個数が予め設定されており、複数の種別の運転パラメータの値に対して実測により事前に求められている教師データであって、各種別の運転パラメータの値が予め設定されている範囲内である教師データが記憶部に記憶されている。パラメータ値取得部により新たに取得された上述の機械の複数の運転パラメータの値の夫々が予め設定されている範囲内であるときには、新たに取得された上述の機械に関する複数の種別の運転パラメータの値に対し実測により得られた教師データを用いて、演算部により、上述の機械に関する複数の種別の運転パラメータの値に応じて変化する出力値と上述の機械に関する複数の種別の運転パラメータの値に対応した教師データとの差が小さくなるようにニューラルネットワークの重みが学習される。パラメータ値取得部により新たに取得された上述の機械に関する複数の種別の運転パラメータの内の少なくとも一つの種別の運転パラメータの値が予め設定されている範囲外であるときには、新たに取得された上述の機械に関する複数の種別の運転パラメータの値に対し実測により得られた教師データの個数の増大、又は、教師データの個数を、予め設定されている範囲を示す最大値及び最小値の差分値で除したデータ密度の増大に応じて、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数を増大させると共に、予め設定されている範囲内および該予め設定されている範囲外の新たに取得された上述の機械に関する複数の種別の運転パラメータの値に対し実測により得られた教師データおよび事前に求められている教師データを用いて、演算部により、上述の機械に関する複数の種別の運転パラメータの値に応じて変化する出力値と上述の機械に関する複数の種別の運転パラメータの値に対応した教師データとの差が小さくなるようにニューラルネットワークの重みが学習される。重みの学習されたニューラルネットワークを用いて上述の機械に関する複数の種別の運転パラメータの値に対する出力値が出力される。
また、この場合、本発明による実施例では、電子制御ユニットが、上述の機械に関する複数の種別の運転パラメータの値を取得するパラメータ値取得部と、入力層、隠れ層および出力層からなるニューラルネットワークを用いて演算を行う演算部と、記憶部とを具備しており、上述の機械に関する複数の種別の運転パラメータの値が入力層に入力され、上述の機械に関する複数の種別の運転パラメータの値に応じて変化する複数の出力値が出力層から出力される。上述の機械に関する複数の種別の運転パラメータの夫々について、各種別の運転パラメータの値の範囲が予め設定されていると共に、上述の機械に関する複数の種別の運転パラメータの値の範囲に応じたニューラルネットワークの隠れ層のノードの個数が予め設定されており、複数の種別の運転パラメータの値に対して実測により事前に求められている教師データであって、各種別の運転パラメータの値が予め設定されている範囲内である教師データが記憶部に記憶されている。パラメータ値取得部により新たに取得された上述の機械の複数の運転パラメータの値の夫々が予め設定されている範囲内であるときには、新たに取得された上述の機械に関する複数の種別の運転パラメータの値に対し実測により得られた教師データを用いて、演算部により、上述の機械に関する複数の種別の運転パラメータの値に応じて変化する複数の出力値と上述の機械に関する複数の種別の運転パラメータの値に対応した教師データとの差が小さくなるようにニューラルネットワークの重みが学習される。パラメータ値取得部により新たに取得された上述の機械に関する複数の種別の運転パラメータの内の少なくとも一つの種別の運転パラメータの値が予め設定されている範囲外であるときには、新たに取得された上述の機械に関する複数の種別の運転パラメータの値に対し実測により得られた教師データの個数の増大、又は、教師データの個数を、予め設定されている範囲を示す最大値及び最小値の差分値で除したデータ密度の増大に応じて、ニューラルネットワークの出力層の一つ前の隠れ層のノードの個数を増大させると共に、予め設定されている範囲内および予め設定されている範囲外の新たに取得された上述の機械に関する複数の種別の運転パラメータの値に対し実測により得られた教師データおよび事前に求められている教師データを用いて、演算部により、上述の機械に関する複数の種別の運転パラメータの値に応じて変化する複数の出力値と上述の機械に関する複数の種別の運転パラメータの値に対応した教師データとの差が小さくなるようにニューラルネットワークの重みが学習される。重みの学習されたニューラルネットワークを用いて上述の機械に関する複数の種別の運転パラメータの値に対する複数の出力値が出力される。
一方、本発明による実施例では、ニューラルネットワークを用い、機械の運転パラメータの値に対する出力値を出力するための機械学習装置において、この機械に関する複数の種別の運転パラメータの値の範囲が予め設定されていると共に、この機械に関する複数の種別の運転パラメータの値の範囲に応じたニューラルネットワークが予め形成されており、新たに取得されたこの機械に関する複数の種別の運転パラメータの値の内の少なくとも一つの種別の運転パラメータの値が予め設定されている範囲外であるときには、新たなニューラルネットワークを形成し、新たに取得されたこの機械に関する複数の種別の運転パラメータの値に対して実測により得られた教師データを用いて新たなニューラルネットワークの重みが学習される。重みの学習されたニューラルネットワークを用いてこの機械に関する複数の種別の運転パラメータの値に対する出力値が出力される。
この場合、本発明による実施例では、機械学習装置が電子制御ユニットを具備しており、この電子制御ユニットが、上述の機械に関する複数の種別の運転パラメータの値を取得するパラメータ値取得部と、入力層、隠れ層および出力層からなる複数個のニューラルネットワークを用いて演算を行う演算部と、記憶部とを具備している。上述の機械に関する複数の種別の運転パラメータの値が入力層に入力され、上述の機械に関する複数の種別の運転パラメータの値に応じて変化する出力値が対応する出力層から出力される。上述の機械に関する複数の種別の運転パラメータの夫々について、各種別の運転パラメータの値の範囲が予め設定されており、各種別の運転パラメータの値の予め設定されている範囲を複数個に区分けすると共に、各種別の運転パラメータの値の区分けされた各範囲の組み合わせにより画定される複数の区分け領域が予め設定されている。区分け領域毎にニューラルネットワークが作成されていると共に各ニューラルネットワークの隠れ層のノードの個数が予め設定されている。複数の種別の運転パラメータの値に対して実測により事前に求められている教師データが記憶部に記憶されている。パラメータ値取得部により新たに取得された上述の機械に関する複数の種別の運転パラメータの値が予め設定されている範囲内であるときには、新たに取得された上述の機械に関する複数の種別の運転パラメータの値に対し実測により得られた教師データを用いて、演算部により、上述の機械に関する複数の種別の運転パラメータの値に応じて変化する出力値と上述の機械に関する複数の種別の運転パラメータの値に対応した教師データとの差が小さくなるように、新たに取得された上述の機械に関する複数の種別の運転パラメータの値の属する区分け領域のニューラルネットワークの重みが学習される。パラメータ値取得部により新たに取得された上述の機械に関する複数の種別の運転パラメータの内の少なくとも一つの種別の運転パラメータの値が予め設定されている範囲外であるときには、少なくとも一つの種別の運転パラメータの値が属しかつ各種別の運転パラメータの値の予め設定された範囲の組み合わせにより画定される新たな領域が設定されると共に、この新たな領域に対し新たなニューラルネットワークが作成される。新たに取得された上述の機械に関する複数の種別の運転パラメータの値に対し実測により得られた教師データを用いて、演算部により、上述の機械に関する複数の種別の運転パラメータの値に応じて変化する出力値と上記機械に関する複数の種別の運転パラメータの値に対応した教師データとの差が小さくなるように新たなニューラルネットワークの重みが学習される。重みの学習された各ニューラルネットワークを用いて上述の機械の運転パラメータの値に対する出力値が出力される。