図1は、本発明を適用した最適化装置の一実施の形態の構成例を示している。
この最適化装置においては、ユーザの操作を、ユーザが知らないうちに学習することにより、そのユーザにとって最適な処理を行うようになっている。即ち、最適化装置では、ユーザの操作に応じて供給される操作信号がモニタされ、学習に用いることができるかどうかが判定される。そして、操作信号が、学習に用いることのできる学習用操作信号である場合には、その学習用操作信号に基づいて、入力信号を補正する規範である補正規範が学習される。一方、入力信号は、学習により得られた補正規範に基づいて補正され、その補正後の信号が、出力信号として出力される。
最適化装置は、補正部1と学習部2から構成されており、そこには、処理の対象となる入力信号の他、ユーザの操作に対応した操作信号が供給されるようになっている。
操作信号は、操作部3から供給されるようになっている。即ち、操作部3は、例えば、ロータリ型やスライド型のつまみや、スイッチ、ポインティングデバイス等で構成されており、ユーザの操作に対応した操作信号を、最適化装置に供給する。
最適化装置を構成する補正部1には、例えば、ディジタルの入力信号が供給されるとともに、学習部2から、入力信号を補正する補正規範としての、例えば、補正パラメータが供給されるようになっている。補正部1は、入力信号を、補正パラメータに基づいて補正し、その補正後の信号を、出力信号として出力する。
学習部2には、操作部3からの操作信号が供給されるとともに、必要に応じて、入力信号または出力信号が供給されるようになっている。学習部2は、操作信号をモニタし、学習に用いることができるかどうかを判定する。そして、学習部2は、操作信号が、学習に用いることのできる学習用操作信号である場合には、その学習用操作信号に基づき、入力信号を補正するのに用いられる補正パラメータを、必要に応じて、入力信号や出力信号を用いて学習し、補正部1に供給する。
なお、学習部2は、学習用データメモリ33と学習情報メモリ35とを内蔵しており、学習用データメモリ33は、学習に用いられる学習用データを記憶し、学習情報メモリ35は、学習によって得られる、後述する学習情報を記憶する。
次に、図2のフローチャートを参照して、図1の最適化装置が行う処理(最適化処理)について説明する。
まず最初に、ステップS1において、学習部2は、操作部3から学習用操作信号を受信したかどうかを判定する。ここで、ユーザは、操作部3を操作する場合、最初は、適当な操作を行い、その操作に応じて出力される出力信号を確認しながら、細かな操作を行って、最終的に最適であると思った出力信号が得られた時点で、操作を停止するのが一般的である。この、ユーザが最適であると思った出力信号が得られた時点における、操作部3の位置に対応する操作信号が、学習用操作信号であり、このため、学習部2は、操作部3の操作が所定時間以上続いた後に、その操作が停止された場合に、その停止されたときの操作信号を、学習用操作信号と判定するようになっている。
ステップS1において、学習用操作信号を受信していないと判定された場合、即ち、例えば、ユーザが操作部3を操作していないか、あるいは、操作していても、最適な位置を探しているような操作をしている場合、ステップS2乃至S10をスキップして、ステップS11に進み、補正部1は、入力信号を、既に設定されている補正パラメータにしたがって補正し、その補正結果としての出力信号を出力して、ステップS1に戻る。
また、ステップS1において、学習用操作信号を受信したと判定された場合、ステップS2に進み、学習部2は、その学習用操作信号に基づいて、学習に用いる学習用データを取得し、ステップS3に進む。ステップS3では、学習用データメモリ33が、ステップS2で取得された最新の学習用データを記憶する。
ここで、学習用データメモリ33は、複数の学習用データを記憶することのできる記憶容量を有している。また、学習用データメモリ33は、その記憶容量分だけの学習用データを記憶すると、次の学習用データを、最も古い記憶値に上書きする形で記憶するようになっている。従って、学習用データメモリ33には、複数の学習用データであって、最近のものが記憶される。
ステップS3で学習用データメモリ33に学習用データを記憶した後は、ステップS4に進み、学習部2は、学習用データメモリ33に記憶された最新の学習用データと、学習情報メモリ35に記憶された学習情報とを用いて学習を行い、補正パラメータを求めて、ステップS5に進む。ステップS5では、学習部2は、ステップS4の学習の途中で得られる新たな学習情報によって、学習情報メモリ35の記憶内容を更新し、ステップS6に進む。
ステップS6では、学習部2は、ステップS4で求めた補正パラメータの適正さを表す、後述するような適正度を求め、ステップS7に進み、その適性度に基づいて、ステップS4で求めた補正パラメータが適正であるかどうかを判定する。
ステップS7において、補正パラメータが適正であると判定された場合、ステップS8およびS9をスキップして、ステップS10に進み、学習部2は、その適正であると判定した補正パラメータを、補正部1に出力して、ステップS11に進む。従って、この場合、それ以降は、補正部1において、ステップS4の学習で求められた新たな補正パラメータにしたがって、入力信号が補正される。
一方、ステップS7において、補正パラメータが適正でないと判定された場合、ステップS8に進み、学習部2は、学習用データメモリ33に記憶された学習用データのうちの、最近の学習用データのみを用いて学習を行い、補正パラメータを求めて、ステップS9に進む。ステップS9では、学習部2は、ステップS8の学習の途中で得られる新たな学習情報によって、学習情報メモリ35の記憶内容を更新し、ステップS10に進む。この場合、ステップS10では、学習部2は、ステップS8で最近の学習用データのみから得られた補正パラメータを、補正部1に出力して、ステップS11に進む。従って、この場合、それ以降は、補正部1において、ステップS8の学習で求められた新たな補正パラメータにしたがって、入力信号が補正される。
次に、図3は、図1の最適化装置を、例えば、画像信号や音声信号からノイズを除去するNR回路に適用した場合の詳細構成例を示している。
重みメモリ11は、学習部2の、後述する選択部21から供給される補正パラメータとしての重み(係数)W(例えば、0以上1以下の値)を記憶する。重みメモリ12は、演算器13から供給される重み1−Wを記憶する。
演算器13は、学習部2の選択部21から供給される重みWを、1.0から減算した減算値1−Wを、重みとして、重みメモリ12に供給する。演算器14は、入力信号と、重みメモリ12に記憶された重み1−Wとを乗算し、その乗算値を、演算器16に供給する。演算器15は、重みメモリ11に記憶された重みWと、ラッチ回路17に記憶(ラッチ)された出力信号とを乗算し、その乗算値を、演算器16に供給する。演算器16は、演算器14と15の出力どうしを加算し、その加算値を、出力信号として出力する。
ラッチ回路17は、演算器16が出力する出力信号をラッチし、演算器15に供給する。
図3の実施の形態では、以上の重みメモリ11および12、演算器13,14,15、および16、並びにラッチ回路17によって、補正部1が構成されている。
選択部21は、重み補正部26が出力する重み、または操作信号処理部30が出力する重みのうちのいずれか一方を選択し、補正パラメータとして、補正部1に供給する。
入力信頼度計算部22には、入力信号が供給されるようになっており、その入力信号の信頼性を表す入力信頼度を求めて、出力信頼度計算部23と重み計算部25に出力する。出力信頼度計算部23は、入力信頼度計算部22からの入力信頼度に基づいて、出力信号の信頼性を表す出力信頼度を求め、ラッチ回路24と重み計算部25に供給する。ラッチ回路24は、出力信頼度計算部23からの出力信頼度を記憶(ラッチ)し、出力信頼度計算部23および重み計算部25に供給する。
重み計算部25は、入力信頼度計算部22からの入力信頼度と、出力信頼度計算部23からの出力信頼度とから、重みを計算し、重み補正部26に出力する。重み補正部26には、重みの他、パラメータ制御データメモリ37から、補正パラメータとしての重みを制御するパラメータ制御データが供給されるようになっており、重み補正部26は、重みを、パラメータ制御データによって処理(補正)し、選択部21に供給する。
操作信号処理部30には、操作部3(図1)から操作信号が供給されるようになっており、操作信号処理部30は、そこに供給される操作信号を処理し、その操作信号に対応する重みを、選択部21、教師データ生成部31、および生徒データ生成部32に供給する。さらに、操作信号処理部30は、操作信号が、上述した学習用操作信号かどうかを判定し、操作信号が学習用操作信号である場合には、その旨のフラグ(以下、適宜、学習フラグという)を、出力する重みに付加する。
教師データ生成部31は、操作信号処理部30から、学習フラグ付きの重みを受信すると、学習の教師となる教師データを生成し、学習用データメモリ33に供給する。即ち、教師データ生成部31は、学習フラグが付加されている重みを、教師データとして、学習用データメモリ33に供給する。
生徒データ生成部32は、操作信号処理部30から学習フラグ付きの重みを受信すると、学習の生徒となる生徒データを生成し、学習用データメモリ33に供給する。即ち、生徒データ生成部32は、例えば、上述の入力信頼度計算部22、出力信頼度計算部23、ラッチ回路24、および重み計算部25と同様に構成され、そこに供給される入力信号から重みを計算しており、学習フラグ付きの重みを受信したときに入力信号から計算された重みを、生徒データとして、学習用データメモリ33に供給する。
学習用データメモリ33は、教師データ生成部31から供給される、学習用操作信号に対応する重みとしての教師データと、生徒データ生成部32から供給される、その学習用操作信号を受信したときの入力信号から計算される重みとしての生徒データとのセットを、1セットの学習用データとして記憶する。なお、上述したように、学習用データメモリ33は、複数の学習用データを記憶することができ、さらに、その記憶容量分だけの学習用データを記憶すると、次の学習用データを、最も古い記憶値に上書きする形で記憶するようになっている。従って、学習用データメモリ33は、基本的に、最近の学習用データの幾つかが、常に記憶されている状態にある。
パラメータ制御データ計算部34は、判定制御部36の制御の下、学習用データメモリ33に記憶された学習用データとしての教師データおよび生徒データ、さらには、必要に応じて、学習情報メモリ35に記憶された学習情報を用いて、所定の統計的な誤差を最小にするパラメータ制御データを、新たな学習情報を演算することにより学習し、判定制御部36に供給する。また、パラメータ制御データ計算部34は、学習によって得られた新たな学習情報によって、学習情報メモリ35の記憶内容を更新する。学習情報メモリ35は、パラメータ制御データ計算部34からの学習情報を記憶する。
判定制御部36は、パラメータ制御データ計算部34から供給されるパラメータ制御データの適正さを、学習用データメモリ33に記憶された最近の学習用データを参照することにより判定する。また、判定制御部36は、パラメータ制御データ計算部34を制御し、パラメータ制御データ計算部34から供給されるパラメータ制御データを、パラメータ制御データメモリ37に供給する。パラメータ制御データメモリ37は、その記憶内容を、判定制御部36から供給されるパラメータ制御データによって更新し、重み補正部26に供給する。
図3の実施の形態では、以上の選択部21乃至重み補正部26、および操作信号処理部30乃至パラメータ制御データメモリ37によって、学習部2が構成されている。
以上のように構成されるNR回路としての最適化装置では、次のようにして、入力信号におけるノイズが除去される。
即ち、例えば、いま、説明を簡単にするために、図4Aに示すような、真値が一定で、かつ時間的に変動するノイズが重畳された入力信号について、その平均をとることで、時間的に変動するノイズを除去することを考えると、ノイズの度合いとしての、例えば、ノイズのレベルが大きい入力信号(従って、S/Nの悪い信号)については、その重みを小さくし(あまり考慮しないようにする)、ノイズのレベルの小さい入力信号(従って、S/Nの良い信号)については、その重みを大きくすることにより、ノイズを効果的に除去することができる。
そこで、図3のNR回路では、入力信号の評価値として、例えば、図4Bに示すような、入力信号の、真値に対する近さ、即ち、入力信号が真値であることの信頼性を表す入力信頼度を求め、その入力信頼度に対応した重み付けを入力信号に対して行いながら、その平均を計算することで、ノイズを効果的に除去するようになっている。
従って、図3のNR回路では、入力信号について、その入力信頼度に対応した重みを用いた重み付け平均が求められ、出力信号として出力されるが、いま、時刻tにおける入力信号、出力信号、入力信頼度を、それぞれx(t),y(t),α
x(t)と表すと、次式にしたがって、出力信号y(t)が求められることになる。
・・・(1)
なお、ここでは、入力信頼度α
x(t)が大きいほど、大きな重みを与えることとしている。
式(1)から、現在時刻tから1サンプル前の出力信号y(t−1)は、次式で求められる。
・・・(2)
また、出力信号y(t)についても、その出力信号y(t)の評価値として、真値に対する近さ、即ち、出力信号y(t)が真値であることの信頼性を表す出力信頼度α
y(t)を導入し、現在時刻tから1サンプル前の出力信号y(t−1)の出力信頼度α
y(t-1)を、次式で定義する。
・・・(3)
この場合、式(1)乃至(3)から、出力信号y(t)およびその出力信頼度α
y(t)は、次のように表すことができる。
・・・(4)
・・・(5)
また、時刻tにおいて、出力信号y(t)を求めるのに用いる重みを、w(t)と表し、これを、次式で定義する。
・・・(6)
式(6)および(7)を用いると、式(4)における出力信号y(t)は、次のような乗算と加算による重み付け平均によって表すことができる。
・・・(8)
なお、式(8)で用いる重みw(t)(および1−w(t))は、式(6)から、1サンプル前の出力信号y(t−1)の出力信頼度αy(t-1)と、現在の入力信号x(t)の入力信頼度αx(t)とから求めることができる。また、式(5)における現在の出力信号y(t)の出力信頼度αy(t)も、その1サンプル前の出力信号y(t−1)の出力信頼度αy(t-1)と、現在の入力信号x(t)の入力信頼度αx(t)とから求めることができる。
ここで、入力信号x(t)の入力信頼度α
x(t)、または出力信号y(t)の出力信頼度α
y(t)として、それぞれの分散σ
x(t) 2、またはσ
y(t) 2の逆数を用いることとすると、即ち、入力信頼度α
x(t)、出力信頼度α
y(t)を、式
・・・(9)
とおくと、式(6)における重みw(t)と、式(7)における重み1−w(t)は、次式で求めることができる。
・・・(10)
・・・(11)
なお、σ
y(t) 2は、次式で求めることができる。
・・・(12)
図3のNR回路は、基本的には、式(6)にしたがい、重みw(t)としての補正パラメータを演算する補正パラメータ演算処理を行い、その重みw(t)を用いて、式(8)にしたがい、1サンプル前の出力信号y(t−1)と、現在の入力信号x(t)との重み付け平均を計算することで、入力信号x(t)に含まれるノイズを効果的に除去する補正処理を行う。
ところで、式(6)にしたがって求められた重みw(t)による入力信号の補正処理の結果得られる出力信号が、必ずしも、ユーザが最適と感じるとは限らない。そこで、図3のNR回路は、ユーザによる操作部3の操作を学習することにより、補正パラメータとしての重みw(t)を制御(補正)するパラメータ制御データを求める制御データ学習処理を行い、そのパラメータ制御データによって補正した重みを用いて、入力信号の補正処理を行うようになっている。
制御データ学習処理は、次のようにして行われるようになっている。
即ち、ユーザが操作部3を操作することによって、i回目に与えられた学習用操作信号に対応する重みWiは、その学習用操作信号が与えられたときに入力された入力信号に対して、ユーザが最適なものと考えているとみることができ、従って、制御データ学習処理では、式(6)にしたがって求められる重みw(t)を、学習用操作信号に対応する重みWiに近い値(理想的には、同一の値)に補正することのできるパラメータ制御データを求めれば良い。
そこで、いま、式(6)にしたがって求められる重みw(t)を、学習の生徒となる生徒データとするとともに、学習用操作信号に対応する重みWiを、学習の教師となる教師データとして、生徒データとしての重みw(t)から、例えば、次式に示すような、パラメータ制御データaとbによって定義される一次式によって予測される、教師データとしての重みWiの予測値Wi’を求めることを考える。
[数13]
Wi’=awi+b
・・・(13)
なお、式(13)において(後述する式(14)、式(16)乃至(21)においても、同様)、wiは、教師データとしての学習用操作信号に対応する重みWiが与えられたときに入力された入力信号に対して、式(6)にしたがって求められる生徒データとしての重みw(t)を表す。
式(13)から、教師データとしてのW
iと、その予測値W
i’との誤差(予測誤差)e
iは、次式で表される。
・・・(14)
いま、式(14)の予測誤差e
iの、次式で表される自乗誤差の総和
・・・(15)
を最小にするパラメータ制御データaとbを、最小自乗法により求めることを考える。なお、式(15)において(後述する式(16)乃至(21)においても、同様)、Nは、教師データと生徒データのセット数を表す。
まず、式(15)の自乗誤差の総和を、パラメータ制御データaとbで、それぞれ偏微分すると、次式が得られる。
・・・(16)
・・・(17)
式(15)の自乗誤差の総和の最小値(極小値)は、式(16)と(17)の右辺を0にするaとbによって与えられるから、式(16)と(17)の右辺を、それぞれ0とおくと、式(16)からは式(18)が、式(17)からは式(19)が、それぞれ得られる。
・・・(18)
・・・(19)
式(19)を、式(18)に代入することにより、パラメータ制御データaは、次式によって求めることができる。
・・・(20)
また、式(19)と(20)から、パラメータ制御データbは、次式によって求めることができる。
・・・(21)
図3のNR回路では、以上のようにして、パラメータ制御データaとbを求める制御データ学習処理を行うようになっている。
次に、図5乃至図7のフローチャートを参照して、図3のNR回路が行う補正処理、補正パラメータ演算処理、および制御データ学習処理について説明する。
まず最初に、図5のフローチャートを参照して、補正処理について説明する。
学習部2の選択部21から、補正部1に対して、補正パラメータとしての重みw(t)が供給されると、補正部1の重みメモリ11は、その重みw(t)を上書きする形で記憶する。さらに、補正部1の演算器13は、重みw(t)を1.0から減算し、重み1−w(t)を求め、重みメモリ12に供給して、上書きする形で記憶させる。
そして、入力信号x(t)が供給されると、ステップS21において、演算器14は、その入力信号x(t)と、重みメモリ12に記憶された重み1−w(t)との積を演算し、演算器16に供給する。さらに、ステップS21では、演算器15が、重みメモリ11に記憶された重みw(t)と、ラッチ回路17にラッチされた1サンプル前の出力信号y(t−1)との積を演算し、演算器16に供給する。
そして、ステップS22に進み、演算器16は、入力信号x(t)および重み1−w(t)の積と、重みw(t)および出力信号y(t−1)の積とを加算し、これにより、入力信号x(t)と出力信号y(t−1)の重み付け加算値(1−w(t))x(t)+w(t)y(t−1)を求めて、出力信号y(t)として出力する。この出力信号y(t)は、ラッチ回路17にも供給され、ラッチ回路17は、出力信号y(t)を上書きする形で記憶する。その後、ステップS21に戻り、次のサンプルの入力信号が供給されるのを待って、以下、同様の処理が繰り返される。
次に、図6のフローチャートを参照して、補正パラメータ演算処理について説明する。
補正パラメータ演算処理では、まず最初に、ステップS31において、入力信頼度計算部22が、例えば、入力信号の分散に基づく入力信頼度αx(t)を求める。
即ち、入力信頼度計算部22は、現在の入力信号のサンプルx(t)の他、その過去数サンプルをラッチすることができる、図示せぬFIFO(First In First Out)メモリを内蔵しており、現在の入力信号のサンプルx(t)と、その過去数サンプルとを用いて、それらの分散を計算し、その逆数を、入力信頼度αx(t)として求め、出力信頼度計算部23および重み計算部25に供給する。なお、入力信号の入力が開始された直後においては、分散を計算するのに必要な数の入力信号のサンプルが存在しない場合があるが、この場合には、例えば、デフォルトの値が、入力信頼度αx(t)として出力される。
その後、ステップS32に進み、重み計算部25は、入力信頼度計算部22からの入力信頼度αx(t)を用い、式(6)にしたがって、重みw(t)を求める。
即ち、入力信頼度計算部22から重み計算部25に対して、入力信頼度αx(t)が供給されるタイミングにおいては、ラッチ回路24において、出力信頼度計算部23が1サンプル前に出力した出力信頼度αy(t-1)がラッチされており、重み計算部25は、ステップS32において、入力信頼度計算部12からの入力信頼度αx(t)と、ラッチ回路14にラッチされている出力信頼度αy(t-1)とを用い、式(6)にしたがって、重みw(t)を求める。この重みw(t)は、重み補正部26に供給される。
その後、ステップS33に進み、重み補正部26は、パラメータ制御データメモリ37からパラメータ制御データを読み出し、ステップS34に進む。ステップS34では、重み補正部26は、パラメータ制御データメモリ37から読み出したパラメータ制御データが、重みw(t)を補正しないモード、即ち、ユーザによる操作部3の操作に関係なく、重み計算部25において、入力信頼度と出力信頼度から、いわば自動的に求められる重みw(t)を、そのまま入力信号x(t)を補正するための重みWとして用いるモード(以下、適宜、オートモードという)を表すオートモードデータとなっているかどうかを判定する。
ステップS34において、パラメータ制御データがオートモードデータでないと判定された場合、ステップS35に進み、重み補正部26は、重み計算部25から供給される重みw(t)を、パラメータ制御データメモリ37から供給されるパラメータ制御データaとbによって定義される式(13)の一次式にしたがって補正し、ステップS36に進む。ステップS36では、重み補正部26が、補正後の重みを、選択部21に供給し、ステップS37に進む。ここで、式(13)において、wiが、重み計算部25から供給される重みw(t)に相当し、Wi’が、補正後の重みWに相当する。
一方、ステップS34において、パラメータ制御データがオートモードデータであると判定された場合、ステップS35をスキップして、ステップS36に進み、重み補正部26は、重み計算部25からの重みw(t)を、そのまま選択部21に供給し、ステップS37に進む。
ステップS37では、出力信頼度計算部23は、出力信頼度を更新する。即ち、出力信頼度計算部23は、直前のステップS31で入力信頼度計算部22が計算した入力信頼度αx(t)と、ラッチ回路24がラッチしている1サンプル前の出力信頼度αy(t-1)とを、式(5)にしたがって加算することで、現在の出力信頼度αy(t)を求め、ラッチ回路24に上書きする形で記憶させる。
そして、ステップS38に進み、選択部21は、操作信号処理部30の出力から、操作部3がユーザによって操作されているかどうかを判定する。ステップS38において、操作部3が操作されていないと判定された場合、ステップS36に進み、選択部21は、重み補正部26から供給された重み(以下、適宜、補正重みという)を選択し、補正部1に出力して、ステップS31に戻る。
また、ステップS38において、操作部3が操作されていると判定された場合、ステップS40に進み、選択部21は、その操作に応じて、操作信号処理部30が出力する重みを選択し、補正部1に出力して、ステップS31に戻る。
従って、図6の補正パラメータ演算処理においては、操作部3が操作されていない場合は、補正重みが、補正部1に供給され、また、操作部3が操作されている場合は、その操作信号に対応する重みが、補正部1に供給される。その結果、補正部1では、操作部3が操作されていない場合は、補正重みによって、入力信号が補正され、操作部3が操作されている場合には、その操作信号に対応する重みによって、入力信号が補正される。
さらに、図6の補正パラメータ演算処理においては、オートモードの場合は、操作部3の操作に関係なく、入力信頼度と出力信頼度のみから、補正処理に用いられる重みが求められ、オートモードでない場合には、操作部3の操作に基づく、後述する図7の制御データ学習処理による学習によって得られるパラメータ制御データを用いて、補正処理に用いられる重みが求められる。
次に、図7のフローチャートを参照して、制御データ学習処理について説明する。
制御データ学習処理では、まず最初に、ステップS41において、操作信号処理部30が、学習用操作信号を、操作部3から受信したかどうかを判定し、受信していないと判定した場合、ステップS41に戻る。
また、ステップS41において、操作部3から、学習用操作信号を受信したと判定された場合、即ち、例えば、操作部3が、その操作の開始後、第1の時間t1以上の間隔をあけることなく、第2の時間t2以上連続して操作され、その後、第3の時間t3以上連続して、その操作が停止された場合や、操作部3の操作の開始後、第3の時間t3以上連続して、その操作が停止された場合など、ユーザが、所望の出力信号を得られるように、操作部3の操作を行ったと判定することができる場合、ステップS42に進み、教師データ生成部31が教師データを生成するとともに、生徒データ生成部32が生徒データを生成する。
即ち、操作信号処理部30は、学習用操作信号を受信した場合、その学習用操作信号に対応する重みW(例えば、操作部3の操作量や、操作部3としてのつまみやレバーなどの位置に対応した重みW)を、学習フラグとともに、教師データ生成部31および生徒データ生成部32に供給する。教師データ生成部31は、学習フラグ付きの重みWを受信すると、その重みWを、教師データとして取得し、学習用データメモリ33に供給する。また、生徒データ生成部32は、学習フラグ付きの重みを受信すると、そのときの入力信号に対応する重みwを、生徒データとして求め、学習用データメモリ33に供給する。
ここで、入力信号に対応する重みwとは、式(6)にしたがい、入力信頼度と出力信頼度とから、いわば自動的に求められる重みを意味し、上述したように、生徒データ生成部32は、この入力信号に対応する重みwを、入力信号から計算している。
学習用データメモリ33は、教師データ生成部31から教師データWを受信するとともに、生徒データ生成部32から生徒データwを受信すると、ステップS43において、その最新の教師データWと生徒データwのセットを記憶し、ステップS44に進む。
ステップS44では、パラメータ制御データ計算部34が、教師データと生徒データを対象として、最小自乗法における足し込みを行う。
即ち、パラメータ制御データ計算部34は、式(20)や(21)における生徒データwiと教師データWiとの乗算(wiWi)とサメーション(ΣwiWi)に相当する演算、生徒データwiのサメーション(Σwi)に相当する演算、教師データWiのサメーション(ΣWi)に相当する演算、生徒データwiどうしの積のサメーション(Σwi 2)に相当する演算を行う。
ここで、例えば、いま、既に、N−1セットの教師データと生徒データが得られており、最新の教師データと生徒データとして、Nセット目の教師データと生徒データが得られたとすると、その時点では、パラメータ制御データ計算部34において、N−1セットの教師データと生徒データを対象とした足し込みが、既に行われている。従って、Nセット目の教師データと生徒データについては、既に行われているN−1セットの教師データと生徒データを対象とした足し込み結果を保持してあれば、その足し込み結果に、Nセット目の教師データと生徒データを足し込むことにより、最新の教師データと生徒データを含む、Nセットの教師データと生徒データの足し込み結果を得ることができる。
そこで、パラメータ制御データ計算部34は、前回の足し込み結果を、学習情報として、学習情報メモリ35に記憶させておくようになっており、この学習情報を用いて、Nセット目の教師データと生徒データについての足し込みを行うようになっている。なお、足し込みには、いままでの足し込みに用いた教師データと生徒データのセット数Nも必要であり、学習情報メモリ35は、このセット数Nも、学習情報として記憶するようになっている。
パラメータ制御データ計算部34は、ステップS44において足し込みを行った後、その足し込み結果を、学習情報として、学習情報メモリ35に上書きする形で記憶させ、ステップS45に進む。
ステップS45では、パラメータ制御データ計算部34が、学習情報メモリ35に記憶された学習情報としての足し込み結果から、式(20)および(21)によって、パラメータ制御データaおよびbを求めることが可能であるかどうかを判定する。
即ち、教師データと生徒データのセットを、以下、適宜、学習対というものとすると、少なくとも、2つの学習対から得られた学習情報が存在しなければ、式(20)および(21)から、パラメータ制御データaおよびbを得ることができない。そこで、ステップS45では、学習情報から、パラメータ制御データaおよびbを求めることが可能であるかどうかが判定される。
ステップS45において、パラメータ制御データaおよびbを求めることが可能でないと判定された場合、パラメータ制御データ計算部34は、その旨を、判定制御部36に供給し、ステップS49に進む。ステップS49では、判定制御部36は、パラメータ制御データとして、オードモードを表すオートモードデータを、パラメータ制御データメモリ37に供給して記憶させる。そして、ステップS41に戻り、以下、同様の処理が繰り返される。
従って、パラメータ制御データaおよびbを求めることができるだけの学習情報が存在しない場合には、図6で説明したように、入力信頼度と出力信頼度から自動的に求められる重みw(t)が、そのまま入力信号x(t)の補正に用いられることになる。
一方、ステップS45において、パラメータ制御データaおよびbを求めることが可能であると判定された場合、ステップS46に進み、パラメータ制御データ計算部34は、学習情報を用い、式(20)および(21)を計算することで、パラメータ制御データaおよびbを求め、判定制御部36に供給して、ステップS47に進む。
ステップS47では、判定制御部36は、パラメータ制御データ計算部34からのパラメータ制御データaおよびbによって定義される式(13)の一次式にしたがい、学習用データメモリ33に記憶された各生徒データから、対応する教師データの予測値を求め、その予測値の予測誤差(学習用データメモリ33に記憶されている教師データに対する誤差)の、式(15)で表される自乗誤差の総和を求める。さらに、判定制御部36は、その自乗誤差の総和を、例えば、学習用データメモリ33に記憶されている学習対の数で除算した正規化誤差を求め、ステップS48に進む。
ステップS48では、判定制御部36は、正規化誤差が、所定の閾値S1より大(以上)であるかどうかを判定する。ステップS48において、正規化誤差が所定の閾値S1より大であると判定された場合、即ち、パラメータ制御データaおよびbによって定義される式(13)の一次式が、学習用データメモリ33に記憶された生徒データと教師データとの関係を、精度良く近似していない場合、ステップS49に進み、判定制御部36は、上述したように、パラメータ制御データとして、オードモードを表すオートモードデータを、パラメータ制御データメモリ37に供給して記憶させる。そして、ステップS41に戻り、以下、同様の処理が繰り返される。
従って、パラメータ制御データaおよびbを求めることができても、そのパラメータ制御データaおよびbによって定義される式(13)の一次式が、学習用データメモリ33に記憶された生徒データと教師データとの関係を、精度良く近似していない場合には、パラメータ制御データaおよびbを求めることができるだけの学習情報が存在しない場合と同様に、入力信頼度と出力信頼度から自動的に求められる重みw(t)が、そのまま入力信号x(t)の補正に用いられることになる。
一方、ステップS48において、正規化誤差が所定の閾値S1より大でないと判定された場合、即ち、パラメータ制御データaおよびbによって定義される式(13)の一次式が、学習用データメモリ33に記憶された生徒データと教師データとの関係を、精度良く近似している場合、ステップS50に進み、判定制御部36は、パラメータ制御データ計算部34からのパラメータ制御データaおよびbによって定義される式(13)の一次式で表される回帰直線と、学習用データメモリ33に記憶された最新の教師データおよび生徒データで規定される点との間の誤差(距離)εを求める。
そして、ステップS51に進み、判定制御部36は、誤差εの大きさが、所定の閾値S2より大(以上)であるかどうかを判定し、大でないと判定した場合、ステップS52をスキップして、ステップS53に進み、判定制御部36は、ステップS46で求められたパラメータ制御データaおよびbを、パラメータ制御部データメモリ37に出力する。パラメータ制御データメモリ37は、判定制御部36からのパラメータ制御データaおよびbを上書きする形で記憶し、ステップS41に戻る。
一方、ステップS51において、誤差εの大きさが、所定の閾値S2より大であると判定された場合、ステップS52に進み、判定制御部36は、パラメータ制御データ計算部34を制御することにより、学習用データメモリ33に記憶された最近の教師データと生徒データとしての、最新の学習対から所定数の過去の学習対のみを用いて(学習情報メモリ35の学習情報を用いずに)、パラメータ制御データaおよびbを再計算させる。そして、ステップS53に進み、判定制御部36は、ステップS52で求められたパラメータ制御データaおよびbを、パラメータ制御部データメモリ37に出力し、上書きする形で記憶させ、ステップS41に戻る。
従って、パラメータ制御データaおよびbを求めることができ、かつ、そのパラメータ制御データaおよびbによって定義される式(13)の一次式が、学習用データメモリ33に記憶された生徒データと教師データとの関係を、精度良く近似している場合には、ユーザによる操作部3の操作に基づいて得られる学習対を用いて学習が行われることにより求められたパラメータ制御データaおよびbによって定義される式(13)にしたがって、入力信頼度と出力信頼度から求められる重みw(t)が補正され、その補正によって得られる補正重みWが、入力信号x(t)の補正に用いられることになる。
ここで、ステップS46で求められたパラメータ制御データaおよびbによって定義される式(13)の一次式で表される回帰直線は、図8Aに示すように、Nセットの教師データと生徒データによって規定されるN個の点との自乗誤差(の総和)を最小にする直線であるが、ステップS50では、この直線と、最新の教師データおよび生徒データで規定される点との間の誤差εが求められる。
そして、この誤差εの大きさが、閾値S2より大でない場合には、ステップS46で求められたパラメータ制御データaおよびbによって定義される式(13)の一次式で表される回帰直線は、最新の教師データと生徒データで規定される点も含め、いままでに与えられた教師データと生徒データで規定される点のいずれも、比較的精度良く近似していると考えられる。
しかしながら、誤差εの大きさが、閾値S2より大の場合には、即ち、最新の教師データと生徒データで規定される点(図8Bにおいて○印で示す)が、図8Bに示すように、ステップS46で求められたパラメータ制御データaおよびbによって定義される式(13)の一次式で表される回帰直線から大きく離れている場合には、何らかの原因で、ユーザが、いままでとは異なる傾向の操作部3の操作を行ったと考えられる。
そこで、この場合、判定制御部36は、パラメータ制御データ計算部34を制御することにより、ステップS52において、学習用データメモリ33に記憶された学習対のうちの、最近の学習対のいくつかのみを用いて、パラメータ制御データaおよびbを再計算させる。
即ち、この場合、パラメータ制御データ計算部34は、学習情報メモリ35に記憶された過去の足し込み結果としての学習情報を用いずに(忘却して)、最近の幾つかの教師データと生徒データのセットのみを用いて、それらの教師データと生徒データによって規定される点の集合を最も良く近似する式(13)の直線を定義するパラメータ制御データaおよびbを再計算する。
具体的には、パラメータ制御データ計算部34は、例えば、図8Cに示すように、最新の教師データと生徒データによって規定される点(図8Cにおいて○印で示す)と、その1回前に与えられた教師データと生徒データによって規定される点(図8Cにおいて△印で示す)とを通る直線を定義するパラメータ制御データa’およびb’を求める。
以上のように、ユーザの操作に応じて供給される操作信号が、学習に用いることができるかどうかを判定し、学習に用いることのできる学習用操作信号である場合には、その学習用操作信号に基づいて、入力信号を補正する重みを補正するパラメータ制御データaおよびbを学習するようにしたので、ユーザの操作を、ユーザが知らないうちに学習することができ、その結果、その学習結果に基づいて、ユーザにとって、徐々に適切な処理が行われるようになり、最終的には、ユーザにとって最適な処理が行われることになる。
これは、ユーザ側からみれば、ユーザが操作部3を通常操作していると、そのうちに、操作を行わなくても、各種の入力信号に対して、ユーザにとって最適なノイズ除去結果が得られることを意味し、従って、装置が、いわば手になじんでくることを意味する。そして、この手になじんでくる段階では、ユーザが、所望の出力信号を得られるように、操作部3の操作を行うことから、ユーザにおいては、操作部3の操作と、入力信号の補正に用いられる重みWとの関係が、徐々に明確に認識されていくことになり、最終的には、ユーザによる操作部3の操作と、入力信号の補正に用いられる重みWとが、定性的に関係付けられることになる。
また、図3のNR回路においては、ユーザによる操作部3の操作にしたがい、補正部1で行われる補正処理(図5)で用いられる重みWが、ユーザにとって所望の出力信号が得られるように変更される。即ち、ユーザが操作部3を操作すると、操作信号処理部30は、その操作に対応した操作信号が表す重みを出力し、選択部21は、その重みを選択して、補正部1に供給する。この場合、補正部1では、ユーザの操作に対応した重みを用いて、式(8)で表される補正処理が行われる。そして、ユーザの操作により式(8)の重みw(t)が変更される場合には、当然に、式(8)で表される処理(補正処理)の内容も変更することとなるから、図3のNR回路では、ユーザの操作にしたがい、その「処理の内容」が、ユーザにとって所望の出力信号が得られるように変更されているということができる。
さらに、図3のNR回路では、パラメータ制御データaおよびbを求めることができない場合や、求めることができても、そのパラメータ制御データaおよびbによって定義される式(13)の一次式が、学習用データメモリ33に記憶された生徒データと教師データとの関係を、精度良く近似していない場合には、入力信頼度と出力信頼度とから自動的に求められる重みが、補正部1における補正処理に用いられる。一方、パラメータ制御データaおよびbを求めることができ、かつ、そのパラメータ制御データaおよびbによって定義される式(13)の一次式が、学習用データメモリ33に記憶された生徒データと教師データとの関係を、精度良く近似している場合には、ユーザによる操作部3の操作に基づいて得られる学習対を用いて学習が行われることにより求められたパラメータ制御データaおよびbによって定義される式(13)にしたがって、入力信頼度と出力信頼度から求められる重みが補正され、その補正によって得られる補正重みが、補正部1による補正処理に用いられる。
即ち、図3のNR回路では、ユーザから十分な数の学習対が入力されていない場合や、精度の高い近似が可能な学習対が入力されていない場合には、入力信頼度と出力信頼度とから自動的に求められる重みが、補正部1における補正処理に用いられ、ユーザから精度の高い近似が可能な学習対が入力された場合には、その学習対を用いて学習が行われることにより求められたパラメータ制御データaおよびbによって求められる補正重みが、補正部1における補正処理に用いられる。
従って、十分な数の学習対や、精度の高い近似が可能な学習対が得られていない場合と、精度の高い近似が可能な学習対が得られた場合とでは、やはり、式(8)の重みw(t)が変化し、その結果、その式(8)で表される補正処理の内容も変更することとなるから、かかる観点からも、図3のNR回路では、ユーザの操作にしたがい、その「処理の内容」が、ユーザにとって所望の出力信号が得られるように変更されているということができる。
さらに、図3のNR回路では、十分な数の学習対や、精度の高い近似が可能な学習対が得られていない場合と、精度の高い近似が可能な学習対が得られた場合とで、補正処理に用いられる重みを算出する体系が変化する。
即ち、十分な数の学習対や、精度の高い近似が可能な学習対が得られていない場合には、ユーザの操作に関係なく、入力信頼度と出力信頼度から、重みが求められる。一方、精度の高い近似が可能な学習対が得られた場合には、ユーザの操作に基づいて得られた学習対を用いた学習によって求められたパラメータ制御データに基づいて、重みが求められる。
従って、この場合、ユーザの操作にしたがい、重みを算出する処理体系、つまり、重みの求め方のアルゴリズムが、ユーザにとって所望の出力信号が得られるように変更されているということができる。
ここで、重みを求める処理を、関数Fで表すこととすると、上述の「処理の内容」の変更というのは、関数Fが変更されることに相当する。そして、関数Fが変更される場合としては、大きく分けて、関数Fそれ自体の形が変わる場合(例えば、F=xからF=x2に変わる場合など)と、関数Fそれ自体の形は変わらないが、関数Fを定義する係数が変わる場合(例えば、F=2xからF=3xに変わる場合など)とがある。
いま、「処理の内容」の変更のうち、その処理を表す関数Fそれ自体の形が変わる場合を、「処理の構造」の変更というものとすると、上述のように、重みを算出する処理体系(重みの求め方のアルゴリズム)が変わることは、「処理の構造」の変更ということができる。
従って、図3のNR回路では、ユーザの操作にしたがい、その「処理の内容」も、さらには、その「処理の構造」も変更され、これにより、ユーザにとって所望の出力信号が得られるようになっている。
なお、入力信号としては、画像信号や音声信号は勿論、その他の信号を用いることが可能である。但し、入力信号が画像信号の場合は、入力信頼度は、処理しようとしている画素に対して、空間的または時間的に近い位置にある複数の画素から求められる分散に基づいて計算することになる。
また、上述の場合には、説明を簡単にするため、学習部2において、入力信頼度等から求められる重みwを、パラメータ制御データaおよびbによって定義される式(13)の一次式によって、補正重みWに補正するようにしたが、重みwの補正は、実際には、より高次の式によって行うのが望ましい。また、その高次の式の次数は、例えば、最適化装置が適用されるアプリケーション等に基づいて適切な値に設定するのが望ましい。
さらに、重みwから、補正重みWを求める式(以下、適宜、補正重み算出式という)としては、式(13)の1次式W=aw+bの他に、例えば、2次式W=aw2+bw+cや、3次式W=aw3+bw2+cw+dなどの複数を用意しておき(a,b,c,dは、所定の係数)、その複数の補正重み算出式のうちの、正規化誤差が最小になるものを採用するようにすることが可能である。なお、この場合、ユーザの操作によって得られる学習対から求められる正規化誤差が最小になる補正重み算出式が選択され、その選択された補正重み算出式によって、補正重みが求められることになる。即ち、ユーザの操作にしたがい、補正重みの求め方のアルゴリズムが変更されることになる。従って、この場合も、ユーザの操作にしたがい、「処理の構造」が変更されているということができる。
次に、図9は、図1の最適化装置を、NR回路に適用した場合の他の詳細構成例を示している。なお、図中、図3における場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。即ち、図9のNR回路は、重み補正部26が設けられておらず、入力信頼度計算部22と生徒データ生成部32に替えて、入力信頼度計算部41と生徒データ生成部42がそれぞれ設けられている他は、基本的に、図3における場合と同様に構成されている。
入力信頼度計算部41は、入力信号の入力信頼度を、入力信号の複数のサンプルと、パラメータ制御データメモリ37に記憶されたパラメータ制御データとから計算し、出力信頼度計算部23と重み計算部25に供給する。
生徒データ生成部42は、入力信号と、出力信頼度計算部23が出力する出力信頼度とを生徒データとして取得し、学習用データメモリ33に供給する。
なお、図9の実施の形態では、重み補正部26が設けられていないため、重み計算部25において求められた重みが、そのまま、選択部21に供給されるようになっており、選択部21は、この重み計算部25が出力する重みと、操作信号処理部30が出力する重みのうちのいずれか一方を、図3における場合と同様にして選択して出力するようになっている。
また、図9の実施の形態では、パラメータ制御データは、入力信頼度を制御するデータとして機能する。
図9のNR回路でも、図3のNR回路と同様に、補正処理、補正パラメータ演算処理、および制御データ学習処理が行われる。なお、補正処理としては、図5で説明した処理と同様の処理が行われるため、図9のNR回路については、補正処理の説明は省略し、補正パラメータ演算処理および制御データ学習処理について説明する。
即ち、図9のNR回路では、補正処理で用いられる、式(6)に示した重みを規定する入力信頼度α
x(t)が、例えば、次式で定義されるものとして、補正パラメータ演算処理および制御データ学習処理が行われる。
・・・(22)
但し、式(22)において、a1,a2,・・・,aNは、パラメータ制御データであり、x1,x2,・・・,xNは、いま処理を施そうとしている入力信号のサンプル(注目サンプル)と所定の関係にある入力信号のサンプルである。ここで、入力信号が、例えば、画像信号である場合には、x1,x2,・・・,xNとしては、例えば、注目サンプルとしての画素(図10において×印で示す)と、その画素から、空間的または時間的に近い位置にある画素(図10に○印で示す)を用いることができる。
式(22)から、式(6)で与えられる重みw(t)は、式(23)に示すように表すことができる。
・・・(23)
従って、入力信号x
1,x
2,・・・,x
Nが入力された場合に、ユーザから与えられた重みWを得るためには、式(23)から、次式を満たすようなパラメータ制御データa
1,a
2,・・・,a
Nを求めれば良いことになる。
・・・(24)
そこで、式(24)を変形すると、式(25)を得ることができる。
・・・(25)
式(25)を常時満たすパラメータ制御データa1,a2,・・・,aNを求めることは、一般に困難であるため、ここでは、例えば、式(25)の左辺と右辺の自乗誤差の総和が最小になるパラメータ制御データa1,a2,・・・,aNを、最小自乗法により求めることを考える。
ここで、式(25)の左辺と右辺の自乗誤差の総和を最小にするということは、式(23)によって与えられる重みw(t)と、ユーザによって与えられる重みWとの自乗誤差を最小にすること、即ち、ユーザによって与えられる重みWを教師データとするとともに、式(23)の重みw(t)を定義する入力信号x1,x2,・・・,xN、および出力信頼度αy(t-1)を生徒データとして、その生徒データから、式(23)によって計算される重みw(t)と、ユーザによって与えられる教師データとしての重みWとの自乗誤差を最小にすることと等価であり、そのようなパラメータ制御データa1,a2,・・・,aNと、生徒データとから式(23)によって計算される重みw(t)は、教師データWとの誤差が小さいものとなる。
式(25)の左辺と右辺の自乗誤差e
2は、式(26)で与えられる。
・・・(26)
自乗誤差e
2を最小にするパラメータ制御データa
1,a
2,・・・,a
Nは、式(26)の自乗誤差e
2を、a
1,a
2,・・・,a
Nそれぞれで偏微分したものが0となるという条件、即ち、次式によって与えられる。
・・・(27)
式(27)に、式(26)を代入して計算すると、式(28)が得られる。
・・・(28)
従って、行列X,A,Yそれぞれを、式(29)に示すように定義すると、これらの行列X,A,Yには、式(28)から、式(30)の関係が成立する。
・・・(29)
・・・(30)
但し、式(29)におけるサメーション(Σ)は、入力信号x1乃至xNと、その入力信号x1乃至xNが入力されたときにユーザから与えられた重みWとのセットの数についてのサメーションを意味する。
式(30)は、例えば、コレスキー法などによって、行列(ベクトル)A、即ち、パラメータ制御データa1,a2,・・・,aNについて解くことができる。
図9のNR回路は、以上のように、ユーザによって与えられる重みWを教師データとするとともに、式(23)の重みw(t)を定義する入力信号x1,x2,・・・,xN、および出力信頼度αy(t-1)を生徒データとして、その生徒データから、式(23)によって計算される重みw(t)と、ユーザによって与えられる教師データとしての重みWとの自乗誤差を最小にするパラメータ制御データa1,a2,・・・,aNを、最小自乗法により学習する制御データ学習処理を行う。さらに、図9のNR回路は、そのパラメータ制御データa1乃至aNで定義される式(22)から入力信頼度αx(t)を求め、さらに、その入力信頼度αx(t)と出力信頼度αy(t-1)から、式(23)にしたがって、補正パラメータとしての重みを求める補正パラメータ演算処理を行う。
そこで、図11のフローチャートを参照して、図9のNR回路による補正パラメータ演算処理について説明する。
補正パラメータ演算処理では、まず最初に、ステップS61において、入力信頼度計算部41が、パラメータ制御データメモリ37からパラメータ制御データを読み出し、ステップS62に進む。ステップS62では、入力信頼度計算部41は、パラメータ制御データメモリ37から読み出したパラメータ制御データが、入力信頼度をパラメータ制御データを用いずに求めるモード、即ち、ユーザによる操作部3の操作に関係なく、入力信頼度を、入力信号だけから、いわば自動的に求めるモード(このモードも、以下、適宜、オートモードという)を表すオートモードデータとなっているかどうかを判定する。
ステップS62において、パラメータ制御データがオートモードデータでないと判定された場合、ステップS63に進み、入力信頼度計算部41は、パラメータ制御データメモリ37から読み出したパラメータ制御データa1乃至aNによって定義される式(22)の一次式にしたがい、そこに供給される最新のN個の入力信号のサンプルx1乃至xNを用いて求め、出力信頼度計算部23および重み計算部25に供給して、ステップS65に進む。
また、ステップS62において、パラメータ制御データがオートモードデータであると判定された場合、ステップS64に進み、入力信頼度計算部41は、例えば、図6のステップS31における場合と同様に、入力信号のみを用い、その分散に基づく入力信頼度αx(t)を求め、出力信頼度計算部23および重み計算部25に供給する。
そして、ステップS65では、重み計算部25は、入力信頼度計算部41からの入力信頼度αx(t)と、ラッチ回路24においてラッチされた、出力信頼度計算部23が1サンプル前に出力した出力信頼度αy(t-1)とを用い、式(23)にしたがって、重みw(t)を求める。この重みw(t)は、重み計算部25から選択部21に供給される。
その後、ステップS66に進み、出力信頼度計算部23は、図6のステップS37における場合と同様に、入力信頼度計算部41から供給された入力信頼度αx(t)と、ラッチ回路24がラッチしている1サンプル前の出力信頼度αy(t-1)とを、式(5)にしたがって加算することで、出力信頼度αy(t)を更新し、ラッチ回路24に上書きする形で記憶させる。
そして、ステップS67に進み、選択部21は、操作信号処理部30の出力から、操作部3がユーザによって操作されているかどうかを判定する。ステップS67において、操作部3が操作されていないと判定された場合、ステップS68に進み、選択部21は、重み計算部25から供給された重みを選択し、補正部1に出力して、ステップS61に戻る。
また、ステップS67において、操作部3が操作されていると判定された場合、ステップS69に進み、選択部21は、その操作に応じて、操作信号処理部30が出力する重みを選択し、補正部1に出力して、ステップS61に戻る。
従って、図11の補正パラメータ演算処理においては、操作部3が操作されていない場合は、入力信頼度に基づいて算出された重みが、補正部1に供給され、また、操作部3が操作されている場合は、その操作信号に対応する重みが、補正部1に供給される。その結果、補正部1では、操作部3が操作されていない場合は、入力信頼度に基づく重みによって、入力信号が補正され、操作部3が操作されている場合には、その操作信号に対応する重みによって、入力信号が補正される。
さらに、図11の補正パラメータ演算処理においては、オートモードの場合は、操作部3の操作に関係なく、入力信号の分散に基づく入力信頼度から、補正処理に用いられる重みが求められ、オートモードでない場合には、操作部3の操作に基づいて、後述する図12の制御データ学習処理による学習によって得られるパラメータ制御データを用いて求められる入力信頼度から、補正処理に用いられる重みが求められる。
次に、図12のフローチャートを参照して、図9のNR回路が行う制御データ学習処理を説明する。
制御データ学習処理では、まず最初に、ステップS71において、図7のステップS41における場合と同様に、操作信号処理部30が、学習用操作信号を、操作部3から受信したかどうかを判定し、受信していないと判定した場合、ステップS71に戻る。
また、ステップS71において、操作部3から、学習用操作信号を受信したと判定された場合、即ち、例えば、操作部3が、その操作の開始後、第1の時間t1以上の間隔をあけることなく、第2の時間t2以上連続して操作され、その後、第3の時間t3以上連続して、その操作が停止された場合や、操作部3の操作の開始後、第3の時間t3以上連続して、その操作が停止された場合など、ユーザが、所望の出力信号を得られるように、操作部3の操作を行ったと判定することができる場合、ステップS72に進み、教師データ生成部31が教師データを生成するとともに、生徒データ生成部42が生徒データを生成する。
即ち、操作信号処理部30は、学習用操作信号を受信した場合、その学習用操作信号に対応する重みWを、学習フラグとともに、教師データ生成部31および生徒データ生成部42に供給する。教師データ生成部31は、学習フラグ付きの重みWを受信すると、その重みWを、教師データとして取得し、学習用データメモリ33に供給する。
一方、生徒データ生成部42は、入力信号をバッファリングするバッファ(図示せず)を内蔵しており、入力信号を、そのバッファに、その記憶容量分だけ常に記憶しており、学習フラグ付きの重みを受信すると、そのときに入力された入力信号のサンプルと所定の位置関係にある入力信号のサンプルx1乃至xNを、その内蔵するバッファから読み出す。さらに、生徒データ生成部42は、出力信頼度計算部23から、出力信頼度αy(t-1)を読み出す。そして、生徒データ生成部42は、これらの入力信号のサンプルx1乃至xNと、出力信頼度αy(t-1)とを、生徒データとして、学習用データメモリ33に供給する。
学習用データメモリ33は、教師データ生成部31から教師データWを受信するとともに、生徒データ生成部42から生徒データx1乃至xNおよびαy(t-1)を受信すると、ステップS73において、その最新の教師データWと生徒データx1乃至xNおよびαy(t-1)のセット(学習対)を記憶し、ステップS74に進む。
ステップS74では、パラメータ制御データ計算部34が、教師データと生徒データを対象として、最小自乗法における足し込みを行う。
即ち、パラメータ制御データ計算部34は、式(29)における行列XとYの要素となっている生徒データどうしの積、および生徒データと教師データの積、並びにそれらのサメーションに相当する演算を行う。
なお、ステップS74における足し込みは、図7のステップS44における場合と同様に行われる。即ち、学習情報メモリ35には、前回の足し込み結果が、学習情報として記憶されており、パラメータ制御データ計算部34は、この学習情報を用いて、最新の教師データと生徒データについての足し込みを行う。
パラメータ制御データ計算部34は、ステップS74において足し込みを行った後、その足し込み結果を、学習情報として、学習情報メモリ35に上書きする形で記憶させ、ステップS75に進み、パラメータ制御データ計算部34が、学習情報メモリ35に記憶された学習情報としての足し込み結果から、式(30)を、行列Aについて解くことが可能であるかどうか、即ち、パラメータ制御データa1乃至aNを求めることが可能であるかどうかを判定する。
即ち、式(30)は、所定数以上の学習対から得られた学習情報が存在しなければ、行列Aについて解くことができず、その要素となっているパラメータ制御データa1乃至aNを求めることができない。そこで、ステップS75では、学習情報から、パラメータ制御データa1乃至aNを求めることが可能であるかどうかが判定される。
ステップS75において、パラメータ制御データa1乃至aNを求めることが可能でないと判定された場合、パラメータ制御データ計算部34は、その旨を、判定制御部36に供給し、ステップS79に進む。ステップS79では、判定制御部36は、パラメータ制御データとして、オードモードを表すオートモードデータを、パラメータ制御データメモリ37に供給して記憶させる。そして、ステップS71に戻り、以下、同様の処理が繰り返される。
従って、パラメータ制御データa1乃至aNを求めることができるだけの学習情報が存在しない場合には、図11で説明したように、入力信号の分散に基づく入力信頼度から求められる重みが、入力信号x(t)の補正に用いられることになる。
一方、ステップS75において、パラメータ制御データを求めることが可能であると判定された場合、ステップS76に進み、パラメータ制御データ計算部34は、学習情報を用い、式(30)を、行列Aについて解くことで、その要素となっているパラメータ制御データa1乃至aNを求め、判定制御部36に供給して、ステップS77に進む。
ステップS77では、判定制御部36は、パラメータ制御データ計算部34からのパラメータ制御データa1乃至aNによって定義される式(23)にしたがい、学習用データメモリ33に記憶された各生徒データから、対応する教師データの予測値を求め、その予測値の予測誤差(学習用データメモリ33に記憶されている教師データに対する誤差)の、式(26)で表される自乗誤差の総和を求める。さらに、判定制御部36は、その自乗誤差の総和を、例えば、学習用データメモリ33に記憶されている学習対の数で除算した正規化誤差を求め、ステップS78に進む。
ステップS78では、判定制御部36は、正規化誤差が、所定の閾値S1より大(以上)であるかどうかを判定する。ステップS78において、正規化誤差が所定の閾値S1より大であると判定された場合、即ち、パラメータ制御データa1乃至aNによって定義される式(23)の一次式が、学習用データメモリ33に記憶された生徒データと教師データとの関係を、精度良く近似していない場合、ステップS79に進み、判定制御部36は、上述したように、パラメータ制御データとして、オードモードを表すオートモードデータを、パラメータ制御データメモリ37に供給して記憶させる。そして、ステップS71に戻り、以下、同様の処理が繰り返される。
従って、パラメータ制御データa1乃至aNを求めることができても、そのパラメータ制御データa1乃至aNによって定義される式(23)が、学習用データメモリ33に記憶された生徒データと教師データとの関係を、精度良く近似していない場合には、パラメータ制御データa1乃至aNを求めることができるだけの学習情報が存在しない場合と同様に、入力信号の分散に基づく入力信頼度から求められる重みが、入力信号x(t)の補正に用いられることになる。
一方、ステップS78において、正規化誤差が所定の閾値S1より大でないと判定された場合、即ち、パラメータ制御データa1乃至aNによって定義される式(23)の一次式が、学習用データメモリ33に記憶された生徒データと教師データとの関係を、精度良く近似している場合、ステップS80に進み、判定制御部36は、パラメータ制御データ計算部34で求められたパラメータ制御データa1乃至aNによって定義される式(23)の面(線)と、学習用データメモリ33に記憶された最新の教師データおよび生徒データで規定される点との間の誤差(距離)εを求める。
そして、ステップS81に進み、判定制御部36は、誤差εの大きさが、所定の閾値S2より大(以上)であるかどうかを判定し、大でないと判定した場合、ステップS82をスキップして、ステップS83に進み、判定制御部36は、ステップS76で求められたパラメータ制御データa1乃至aNを、パラメータ制御部データメモリ37に出力する。パラメータ制御データメモリ37は、判定制御部36からのパラメータ制御データa1乃至aNを上書きする形で記憶し、ステップS71に戻り、以下、同様の処理が繰り返される。
一方、ステップS81において、誤差εの大きさが、所定の閾値S2より大であると判定された場合、ステップS82に進み、判定制御部36は、パラメータ制御データ計算部34を制御することにより、学習用データメモリ33に記憶された最近の教師データと生徒データのみを用いて、パラメータ制御データa1乃至aNを再計算させる。そして、ステップS83に進み、判定制御部36は、ステップS82で求められたパラメータ制御データa1乃至aNを、パラメータ制御部データメモリ37に出力し、上書きする形で記憶させ、ステップS71に戻る。
即ち、図12の実施の形態においても、図7の実施の形態における場合と同様に、ステップS82において、いままでに与えられた教師データおよび生徒データから求められたパラメータ制御データa1乃至aNから式(23)で定義される面と、最新の教師データおよび生徒データで規定される点との間の誤差εが求められる。
そして、この誤差εの大きさが、閾値S2より大でない場合には、ステップS76で求められたパラメータ制御データa1乃至aNによって定義される式(23)の面が、最新の教師データと生徒データで規定される点も含め、いままでに与えられた教師データと生徒データで規定される点のいずれも、比較的精度良く近似していると考えられるため、そのパラメータ制御データa1乃至aNが、パラメータ制御データメモリ37に記憶される。
一方、誤差εの大きさが、閾値S2より大の場合には、ステップS76で求められたパラメータ制御データa1乃至aNによって定義される式(23)の面から、最新の教師データと生徒データで規定される点が比較的大きく離れていると考えられるため、判定制御部36は、パラメータ制御データ計算部34を制御することにより、ステップS82において、学習用データメモリ33に記憶された最近の教師データと生徒データのみを用いて、パラメータ制御データa1乃至aNを再計算させる。
図9のNR回路では、入力信頼度計算部41において、以上のようにして求められたパラメータ制御データa1乃至aNから、式(22)にしたがい、入力信頼度αx(t)が計算される。
従って、この場合も、ユーザの操作に応じて供給される学習用操作信号に基づいて、式(22)の入力信頼度αx(t)を規定するパラメータ制御データa1乃至aNの学習が行われるので、ユーザの操作を、ユーザが知らないうちに学習することができ、さらに、その学習結果を用いて、ユーザにとって最適な処理を行うことが可能となる。
また、図9のNR回路も、図3のNR回路と同様に、ユーザが操作部3を操作すると、操作信号処理部30は、その操作に対応した操作信号が表す重みを出力し、選択部21は、その重みを選択して、補正部1に供給する。この場合、補正部1では、ユーザの操作に対応した重みを用いて、式(8)で表される補正処理が行われる。そして、ユーザの操作により式(8)の重みw(t)が変更される場合には、当然に、式(8)で表される処理(補正処理)の内容も変更することとなるから、図9のNR回路でも、ユーザの操作にしたがい、その「処理の内容」が、ユーザにとって所望の出力信号が得られるように変更されているということができる。
さらに、図9のNR回路では、パラメータ制御データa1乃至aNを求めることができない場合や、求めることができても、そのパラメータ制御データa1乃至aNによって定義される式(23)が、学習用データメモリ33に記憶された生徒データと教師データとの関係を、精度良く近似していない場合には、入力信号の分散に基づく入力信頼度から求められる重みが、補正部1における補正処理に用いられる。一方、パラメータ制御データa1乃至aNを求めることができ、かつ、そのパラメータ制御データa1乃至aNによって定義される式(23)が、学習用データメモリ33に記憶された生徒データと教師データとの関係を、精度良く近似している場合には、ユーザによる操作部3の操作に基づいて得られる学習対を用いて学習が行われることにより求められたパラメータ制御データa1乃至aNによって定義される式(23)にしたがって、入力信号およびパラメータ制御データa1乃至aN(から算出される入力信頼度)と出力信頼度とから求められる重みが、補正部1による補正処理に用いられる。
即ち、図9のNR回路も、図3のNR回路における場合と同様に、十分な数の学習対や、精度の高い近似が可能な学習対が得られていない場合と、精度の高い近似が可能な学習対が得られた場合とで、補正処理に用いられる重みを算出する体系が変化する。
従って、図9のNR回路でも、ユーザの操作にしたがい、その「処理の内容」も、さらには、その「処理の構造」も変更され、これにより、ユーザにとって所望の出力信号が出力されることになる。
なお、上述の場合においては、出力信頼度αy(t-1)を生徒データとして用いて、パラメータ制御データa1乃至aNを求めているが、この出力信頼度αy(t-1)は、式(5)に示したように、入力信頼度αx(t-1)から求められる。そして、入力信頼度αx(t)は、図12の制御データ学習処理が行われることにより、徐々に、ユーザが希望する重みが得られるように改善されていくから、あわせて、出力信頼度αy(t-1)も改善されていくことになる。
また、上述の場合には、出力信頼度を既知の値とするとともに、入力信頼度を、パラメータ制御データa1乃至aNによって規定し、ユーザが希望する重みが得られるようなパラメータ制御データa1乃至aNを求めるようにしたが、これとは逆に、入力信頼度を既知の値とするとともに、出力信頼度を、パラメータ制御データa1乃至aNによって規定し、ユーザが希望する重みが得られるようなパラメータ制御データa1乃至aNを求めることも可能である。
さらに、例えば、出力信頼度を既知の値とするとともに、入力信頼度を、パラメータ制御データa1乃至aNによって規定し、ユーザが希望する重みが得られるようなパラメータ制御データa1乃至aNを求め、さらに、そのパラメータ制御データa1乃至aNによって得られる入力信頼度を既知の値とするとともに、出力信頼度を、パラメータ制御データa1’乃至aN’によって規定し、ユーザが希望する重みが得られるようなパラメータ制御データa1’乃至aN’を求めること、即ち、2セットのパラメータ制御データa1乃至aNおよびa1’乃至aN’を求めるようにすることも可能である。
また、上述の場合には、重みを、式(6)に示したように、入力信頼度α
x(t)と出力信頼度α
y(t-1)で定義して、パラメータ制御データa
1乃至a
Nを求めるようにしたが、その他、重みを、例えば、式(31)に示すように、入力信頼度α
x(t)と出力信頼度α
y(t-1)の他、入力信頼度α
x(t)または出力信頼度α
y(t-1)の補正項△αをも用いて定義して、パラメータ制御データa
1乃至a
Nと補正項△αを求めるようにすることが可能である。
・・・(31)
さらに、入力信頼度を、パラメータ制御データによって定義する式は、式(22)に限定されるものではない。
次に、図13は、図1の最適化装置を適用した、自動車の自動走行装置の一実施の形態の構成例を示している。
自動走行装置においては、自動車の位置座標(X,Y)や走行方向θが求められ、所定の軌跡に沿って、自動車を走行させるようになっている。しかしながら、自動走行装置において求められる座標(X,Y)や走行方向θには、誤差が含まれる場合が多く、この場合には、自動車が、所定の軌跡からはずれて走行することがある。そこで、図13の自動走行装置においては、ユーザの操作を、ユーザが知らないうちに学習し、その学習結果に基づいて、自動車を、所定の軌跡に沿って走行させるようになっている。即ち、自動車が、所定の軌跡からはずれて走行しだした場合、一般に、ユーザは、自動車を所定の軌跡に沿って走行させるように、ハンドルやアクセルなどを操作する。そこで、図13の自動走行装置では、そのようなユーザの操作を、ユーザが知らないうちに学習し、その学習結果に基づいて、自動車を、徐々に、所定の軌跡に沿って走行させるように制御する。
ジャイロセンサ51は、自動車のヨーレートrを検知し、演算部53に供給する。車輪パルサ52は、自動車の車輪の回転角度に応じた数の電気パルスを、演算部53に供給する。
演算部53は、ジャイロセンサ51と車輪パルサ52の出力から、例えば、次式にしたがって、自動車の座標(X,Y)と走行方向θを演算し、最適化装置54に供給する。
・・・(32)
但し、式(32)において、θ(0)は自動車の走行開始時の方向を表し、(X(0),Y(0))は、自動車の走行開始時の座標を表す。なお、θ(0)や(X(0),Y(0))は、例えば、図示せぬGPS(Global Positioning System)等を利用して求めることができる。また、Vrは、自動車の走行速度を表し、βは、自動車の重心点のスリップアングルを表す。
ここで、上述のようにして、自動車の座標(X,Y)と走行方向θを求める方法は、例えば、特開平10-69219号公報に開示されている。
最適化装置54は、ユーザによる操作部58の操作を学習し、即ち、ユーザが操作部58を操作することにより供給される操作信号に基づいて学習を行い、その学習結果に基づき、演算部53からの座標(X,Y)や走行方向θを、ユーザが所望する走行が行われるように補正し、自動走行制御部55に供給する。
自動走行制御部55は、地図データと、自動走行すべき、あらかじめ設定された軌跡(以下、適宜、設定軌跡という)を記憶している。そして、自動走行制御部55は、最適化装置54から供給される座標(X,Y)と走行方向θから、自動車の現在位置と走行方向を認識し、自動車が設定軌跡に沿って走行するように、後述する駆動部57を制御する制御信号を生成して、選択部56に出力する。
選択部56には、自動走行制御部55から制御信号が供給される他、操作部58から操作信号が供給されるようになっている。そして、選択部56は、自動走行制御部55からの制御信号と、操作部58からの操作信号のうちの操作信号を、優先的に選択し、駆動部57に出力する。即ち、選択部56は、通常は、自動走行制御部55からの制御信号を選択し、駆動部57に出力するが、操作部58からの操作信号を受信すると、その操作信号を受信している間は、自動走行制御部55からの制御信号の出力を停止して、操作部58からの操作信号を、駆動部57に出力する。
駆動部57は、選択部56からの制御信号または操作信号にしたがい、自動車の図示せぬエンジンや、車輪、ブレーキ、クラッチ等の、走行に必要な各機構を駆動する。操作部58は、例えば、ハンドルや、アクセルペダル、ブレーキペダル、クラッチペダル等で構成され、ユーザの操作に対応した操作信号を、最適化装置54および選択部56に供給する。
以上のように構成される自動走行装置では、演算部53において、ジャイロセンサ51と車輪パルサ52の出力から、自動車の現在の座標(X,Y)と走行方向θが演算され、最適化装置54を介して、自動走行制御部55に供給される。自動走行制御部55は、そこに供給される座標(X,Y)と走行方向θから、自動車の現在位置と走行方向を認識し、自動車が設定軌跡に沿って走行するように、後述する駆動部57を制御する制御信号を生成して、選択部56を介して、駆動部57に供給する。これにより、自動車は、自動走行制御部55が出力する制御信号にしたがって自動走行する。
一方、ユーザが操作部58を操作すると、その操作に対応した操作信号が、選択部56を介して、駆動部57に供給され、これにより、自動車は、ユーザによる操作部58の操作にしたがって走行する。
さらに、ユーザが操作部58を操作することにより、操作部58が出力する操作信号は、最適化装置54にも供給される。最適化装置54は、ユーザが操作部58を操作することにより供給される操作信号に基づいて学習を行う。そして、最適化装置54は、ユーザが操作部58の操作を停止すると、演算部53から供給される座標(X,Y)や走行方向θを、学習結果に基づき、ユーザが所望する走行としての設定軌跡に沿った走行が行われるように補正し、自動走行制御部55に供給する。
次に、図14は、図13の最適化装置54の構成例を示している。なお、図中、図3における場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。即ち、図14の最適化装置54は、選択部21が設けられておらず、操作信号処理部30と教師データ生成部31に替えて、操作信号処理部60と教師データ生成部61がそれぞれ設けられている他は、基本的に、図3における場合と同様に構成されている。
ここで、以下においては、説明を簡単にするため、演算部53から最適化装置54に供給される座標(X,Y)と走行方向θのうち、走行方向θにだけ注目して、説明を行う。但し、座標(X,Y)についても、以下説明する走行方向θに対する処理と同様の処理を行うことが可能である。
操作信号処理部60は、操作部58からの操作信号を受信し、学習用操作信号かどうかを判定する。そして、操作信号処理部60は、操作信号が学習用操作信号である場合には、その旨を表すメッセージを、生徒データ生成部32と教師データ生成部61に供給する。
教師データ生成部61には、操作信号処理部60から、操作信号が学習用操作信号である旨のメッセージ(以下、適宜、学習メッセージという)が供給される他、入力信号としての、演算部53からの走行方向θが供給されるようになっている。さらに、教師データ生成部61には、補正部1(演算器16)が出力する出力信号としての、演算部53からの走行方向θを補正したもの(以下、適宜、補正走行方向という)も供給されるようになっている。教師データ生成部61は、学習メッセージを受信したときに供給される入力信号としての走行方向θと、出力信号としての補正走行方向とから、学習用操作信号に対応する重みWを求め、教師データとして、学習用データメモリ33に供給する。
即ち、いまの場合、教師データとしては、自動車が所定の方向に向くように、ユーザが、ハンドルとしての操作部58を操作した後に、自動車が所定の方向を向いたときの重みWを求める必要がある。つまり、教師データとしては、ユーザが、ハンドルとしての操作部58を操作し、自動車が所望の方向を向くようになった直後の、その走行方向θを表す入力信号x(t)の補正に用いられる重みWを採用する必要がある。この、操作部58の操作直後の入力信号x(t)は、式(8)にしたがい、その入力信号x(t)と、操作部58の操作直前に出力される出力信号y(t−1)との重み付け加算によって、補正走行方向としての、操作部58の操作直後の出力信号y(t)に補正されることから、操作部58の操作直後の入力信号x(t)の補正に用いられる重みWは、式(8)から、操作部58の操作直後の入力信号x(t)並びに操作部58の操作直後の出力信号y(t)および操作部58の操作直前のy(t−1)によって求めることができる。そこで、教師データ生成部61は、学習メッセージを受信した直後に供給される入力信号x(t)としての走行方向θ、および学習メッセージを受信した直前と直後にそれぞれ供給される出力信号y(t−1)とy(t)としての補正走行方向から、教師データとしての重みWを求め、学習用データメモリ33に供給する。
なお、生徒データ生成部32は、学習メッセージを受信すると、その直前までに供給された入力信号としての走行方向から求められている重みwを、生徒データとして、学習用データメモリ33に供給する。
即ち、生徒データ生成部32は、図3で説明したように、入力信頼度計算部22、出力信頼度計算部23、ラッチ回路24、および重み計算部25と同様に構成され、そこに供給される入力信号としての走行方向から重みw(重み計算部25で求められるのと同一の重みw)を計算しており、学習メッセージを受信する直前において計算された重みwを、生徒データとして、学習用データメモリ33に供給する。
従って、パラメータ制御データ計算部34では、ユーザが操作部58を操作して、走行方向が、ユーザが所望する方向となったときの重みWを教師データとするとともに、ユーザが操作部58を操作する直前に重み計算部25が出力したのと同一の重みwを生徒データとして、式(20)および(21)に示したパラメータ制御データaおよびbの計算が行われる。
そして、重み補正部26では、そのパラメータ制御データaおよびbを用いて、式(13)にしたがい、重み計算部25で求められた重みwが補正され、補正部1に供給される。
その結果、パラメータ制御データaおよびbは、ユーザが操作部58を操作する直前の走行方向を、ユーザが操作部58を操作した直後の走行方向に補正するように、重み計算部25で求められた重みwを補正するものとなるから、自動車は、設定軌跡に沿って自動走行するようになることになる。
即ち、ユーザが操作部58を操作するということは、ジャイロセンサ51の誤差や、その出力に含まれるノイズ、演算部53における演算誤差等に起因して、演算部53が出力する走行方向θが誤差を含み、自動車の真の走行方向を表していないために、自動車の実際の走行方向が、設定軌跡からはずれている状態になっていると考えられる。さらに、この場合におけるユーザによる操作部58の操作は、自動車の実際の走行方向を、設定軌跡に沿った方向にするものであると考えられる。従って、ユーザが操作部58を操作し、自動車の実際の走行方向が、設定軌跡に沿ったものとなったときにおける重みWを教師データとするとともに、ユーザが操作部58を操作する直前に重み計算部25で求められた重みw、即ち、設定軌跡からはずれている状態での重み計算部25が出力する重みwを生徒データとして学習を行うことにより、設定軌跡からはずれている状態での走行方向を、設定軌跡に沿った方向に補正するように、式(6)の重みを補正する式(13)のパラメータ制御データaおよびbが求められることになる。
次に、図14の最適化装置54の処理について説明する。なお、図14の最適化装置54では、図3のNR回路と同様に、入力信号x(t)としての演算部53が出力する走行方向θを補正する補正処理、その補正処理に用いられる補正パラメータとしての重みを求める補正パラメータ演算処理、およびユーザによる操作部58(図13)の操作を学習することにより、補正パラメータとしての重みを制御(補正)するパラメータ制御データを求める制御データ学習処理が行われるが、補正処理は、図5で説明した図3のNR回路による補正処理と同一であるため、ここでは、図14の最適化装置54が行う補正パラメータ演算処理と生徒データ学習処理について説明する。
まず、図15のフローチャートを参照して、図14の最適化装置54が行う補正パラメータ演算処理について説明する。
補正パラメータ演算処理では、まず最初に、ステップS91において、入力信頼度計算部22が、図6のステップS31における場合と同様に、入力信号としての演算部53(図13)からの走行方向θの分散に基づく入力信頼度αx(t)を求め、出力信頼度計算部23および重み計算部25に供給する。
その後、ステップS92に進み、重み計算部25は、入力信頼度計算部22からの入力信頼度αx(t)を用い、式(6)にしたがって、重みw(t)を求め、重み補正部26に供給し、ステップS93に進む。
ステップS93では、重み補正部26は、パラメータ制御データメモリ37からパラメータ制御データを読み出し、ステップS94に進む。ステップS94では、重み補正部26は、パラメータ制御データメモリ37から読み出したパラメータ制御データが、重みw(t)を補正しないモード、即ち、ユーザによる操作部58(図13)の操作に関係なく、重み計算部25において、入力信頼度と出力信頼度から、いわば自動的に求められる重みw(t)を、そのまま入力信号x(t)を補正するための重みWとして用いるモード(オートモード)を表すオートモードデータとなっているかどうかを判定する。
ステップS93において、パラメータ制御データがオートモードデータでないと判定された場合、ステップS95に進み、重み補正部26は、重み計算部25から供給される重みw(t)を、パラメータ制御データメモリ37から供給されるパラメータ制御データaとbによって定義される式(13)の一次式にしたがって補正し、ステップS96に進む。ステップS96では、重み補正部26が、補正後の重みを、補正パラメータとして、補正部1に供給し、ステップS97に進む。
一方、ステップS94において、パラメータ制御データがオートモードデータであると判定された場合、ステップS95をスキップして、ステップS96に進み、重み補正部26は、重み計算部25からの重みw(t)を、補正パラメータとして、そのまま補正部1に供給し、ステップS97に進む。
ステップS97では、出力信頼度計算部23は、出力信頼度を更新する。即ち、出力信頼度計算部23は、直前のステップS31で入力信頼度計算部22が計算した入力信頼度αx(t)と、ラッチ回路24がラッチしている1サンプル前の出力信頼度αy(t-1)とを、式(5)にしたがって加算することで、現在の出力信頼度αy(t)を求め、ラッチ回路24に上書きする形で記憶させる。
ステップS97の処理後は、ステップS91に戻り、以下、同様の処理が繰り返される。
以上のように、図15の補正パラメータ演算処理においては、オートモードの場合は、操作部58の操作に関係なく、入力信頼度と出力信頼度から、補正処理に用いられる重みが求められ、オートモードでない場合には、操作部58の操作に基づいて、後述する図16の制御データ学習処理による学習によって得られるパラメータ制御データを用いて、補正処理に用いられる重みが求められる。
次に、図16のフローチャートを参照して、図14の最適化装置54が行う制御データ学習処理について説明する。
制御データ学習処理では、まず最初に、ステップS101において、操作信号処理部60が、学習用操作信号を、操作部58(図13)から受信したかどうかを判定し、受信していないと判定した場合、ステップS101に戻る。
また、ステップS101において、操作部58から、学習用操作信号を受信したと判定された場合、即ち、例えば、操作部58としてハンドルなどが、その操作の開始後、第1の時間t1以上の間隔をあけることなく、第2の時間t2以上連続して操作され、その後、第3の時間t3以上連続して、その操作が停止された場合や、操作部58としてのハンドルの操作の開始後、第3の時間t3以上連続して、その操作が停止された場合など、自動車が所望の方向を向くように、ユーザが操作部58としてのハンドルの操作を行ったと判定することができる場合、ステップS102に進み、教師データ生成部61が教師データを生成するとともに、生徒データ生成部32が生徒データを生成する。
即ち、操作信号処理部60は、学習用操作信号を受信したと判定すると、学習メッセージを、教師データ生成部61および生徒データ生成部32に供給する。教師データ生成部61は、操作信号処理部60から学習メッセージを受信すると、ステップS102において、演算部53から供給される入力信号としての走行方向θと、補正部1(演算器16)が出力する出力信号としての、演算部53からの走行方向θを補正したもの(補正走行方向)とから、学習用操作信号に対応する重みWを求める。
具体的には、教師データ生成部61は、ユーザが、ハンドルとしての操作部58を操作し、自動車が所望の方向を向くようになった直後の、その走行方向θを表す入力信号x(t)を、演算部53(図13)から受信する。さらに、教師データ生成部61は、補正部1が出力する現在の出力信号y(t)と、その1時刻だけ前の出力信号y(t−1)、即ち、操作部58の操作直前の出力信号y(t−1)を保持するようになっており、これらの入力信号x(t)、並びに出力信号y(t)およびy(t−1)を用いて、式(8)にしたがい、学習用操作信号が与えられたときに補正部1で用いられた重みW(学習用操作信号に対応する重み)を求める。
なお、ここでは、説明を簡単にするために、ユーザによる操作部58としてのハンドルの操作が、t−1からtまでの1時刻の間に、瞬時に完了するものとする。
教師データ生成部61は、以上のようにして、学習用操作信号に対応する重みWを求めると、その重みWを、教師データとして、学習用データメモリ33に供給する。
さらに、ステップS102では、操作信号処理部60から学習メッセージを受信した生徒データ生成部32が、その直前までに、演算部53(図13)から供給された入力信号としての走行方向から求められる入力信頼度と出力信頼度を用いて計算された、重み計算部25が出力するのと同一の重みwを、生徒データとして、学習用データメモリ33に供給する。
従って、学習データメモリ33には、ユーザが操作部58を操作して、自動車の実際の走行方向が、ユーザが所望する方向となったときに補正部1で用いられた重みWを教師データとするとともに、ユーザが操作部58を操作する直前に、入力信頼度と出力信頼度から求められていた重みwを生徒データとする学習対が供給される。
学習用データメモリ33は、教師データ生成部61から教師データWを受信するとともに、生徒データ生成部32から生徒データwを受信すると、ステップS103において、その最新の教師データWと生徒データwのセットを記憶し、ステップS104に進む。
ステップS104では、パラメータ制御データ計算部34が、図7のステップS44における場合と同様に、学習用データメモリ33に記憶された最新の教師データと生徒データ、および学習情報メモリ35に記憶されている学習情報を対象として、最小自乗法における足し込みを行う。さらに、ステップS104では、パラメータ制御データ計算部34は、その足し込み結果を、学習情報として、学習情報メモリ35に上書きする形で記憶させ、ステップS105に進む。
ステップS105では、図7のステップS45における場合と同様に、パラメータ制御データ計算部34が、学習情報メモリ35に記憶された学習情報としての足し込み結果から、式(20)および(21)によって、パラメータ制御データaおよびbを求めることが可能であるかどうかを判定する。
ステップS105において、パラメータ制御データaおよびbを求めることが可能でないと判定された場合、パラメータ制御データ計算部34は、その旨を、判定制御部36に供給し、ステップS109に進む。ステップS109では、判定制御部36は、パラメータ制御データとして、オードモードを表すオートモードデータを、パラメータ制御データメモリ37に供給して記憶させる。そして、ステップS101に戻り、以下、同様の処理が繰り返される。
従って、パラメータ制御データaおよびbを求めることができるだけの学習情報が存在しない場合には、重み計算部25(図14)において、入力信頼度と出力信頼度から自動的に求められる重みw(t)が、そのまま入力信号x(t)の補正に用いられることになる。
一方、ステップS105において、パラメータ制御データaおよびbを求めることが可能であると判定された場合、ステップS105に進み、パラメータ制御データ計算部34は、学習情報を用い、式(20)および(21)を計算することで、パラメータ制御データaおよびbを求め、判定制御部36に供給して、ステップS107に進む。
ステップS107では、判定制御部36は、パラメータ制御データ計算部34からのパラメータ制御データaおよびbによって定義される式(13)の一次式にしたがい、学習用データメモリ33に記憶された各生徒データから、対応する教師データの予測値を求め、その予測値の予測誤差(学習用データメモリ33に記憶されている教師データに対する誤差)の、式(15)で表される自乗誤差の総和を求める。さらに、判定制御部36は、その自乗誤差の総和を、例えば、学習用データメモリ33に記憶されている学習対の数で除算した正規化誤差を求め、ステップS108に進む。
ステップS108では、判定制御部36は、正規化誤差が、所定の閾値S1より大(以上)であるかどうかを判定する。ステップS108において、正規化誤差が所定の閾値S1より大であると判定された場合、即ち、パラメータ制御データaおよびbによって定義される式(13)の一次式が、学習用データメモリ33に記憶された生徒データと教師データとの関係を、精度良く近似していない場合、ステップS109に進み、判定制御部36は、上述したように、パラメータ制御データとして、オードモードを表すオートモードデータを、パラメータ制御データメモリ37に供給して記憶させる。そして、ステップS101に戻り、以下、同様の処理が繰り返される。
従って、パラメータ制御データaおよびbを求めることができても、そのパラメータ制御データaおよびbによって定義される式(13)の一次式が、学習用データメモリ33に記憶された生徒データと教師データとの関係を、精度良く近似していない場合には、パラメータ制御データaおよびbを求めることができるだけの学習情報が存在しない場合と同様に、入力信頼度と出力信頼度から自動的に求められる重みw(t)が、そのまま入力信号x(t)の補正に用いられることになる。
一方、ステップS108において、正規化誤差が所定の閾値S1より大でないと判定された場合、即ち、パラメータ制御データaおよびbによって定義される式(13)の一次式が、学習用データメモリ33に記憶された生徒データと教師データとの関係を、精度良く近似している場合、ステップS110に進み、判定制御部36は、パラメータ制御データ計算部34からのパラメータ制御データaおよびbによって定義される式(13)の一次式で表される回帰直線と、学習用データメモリ33に記憶された最新の教師データおよび生徒データで規定される点との間の誤差(距離)εを求める。
そして、ステップS111に進み、判定制御部36は、誤差εの大きさが、所定の閾値S2より大(以上)であるかどうかを判定し、大でないと判定した場合、ステップS112をスキップして、ステップS113に進み、判定制御部36は、ステップS106で求められたパラメータ制御データaおよびbを、パラメータ制御部データメモリ37に出力する。パラメータ制御データメモリ37は、判定制御部36からのパラメータ制御データaおよびbを上書きする形で記憶し、ステップS101に戻る。
一方、ステップS111において、誤差εの大きさが、所定の閾値S2より大であると判定された場合、ステップS112に進み、判定制御部36は、パラメータ制御データ計算部34を制御することにより、学習用データメモリ33に記憶された最近の教師データと生徒データとしての、最新の学習対から所定数の過去の学習対のみを用いて(学習情報メモリ35の学習情報を用いずに)、パラメータ制御データaおよびbを再計算させる。そして、ステップS113に進み、判定制御部36は、ステップS112で求められたパラメータ制御データaおよびbを、パラメータ制御部データメモリ37に出力し、上書きする形で記憶させ、ステップS101に戻る。
従って、パラメータ制御データaおよびbを求めることができ、かつ、そのパラメータ制御データaおよびbによって定義される式(13)の一次式が、学習用データメモリ33に記憶された生徒データと教師データとの関係を、精度良く近似している場合には、ユーザによる操作部3の操作に基づいて得られる学習対を用いて学習が行われることにより求められたパラメータ制御データaおよびbによって定義される式(13)にしたがって、入力信頼度と出力信頼度から求められる重みw(t)が補正され、その補正によって得られる補正重みWが、入力信号x(t)の補正に用いられることになる。
以上のように、図13の自動走行装置でも、ユーザの操作に応じて供給される操作信号が、学習に用いることができるかどうかが判定され、学習に用いることのできる学習用操作信号である場合には、その学習用操作信号に基づいて、入力信号を補正する重みを補正するパラメータ制御データaおよびbが学習されるので、ユーザの操作を、ユーザが知らないうちに学習することができ、その結果、その学習結果に基づいて、ユーザにとって、徐々に適切な処理が行われるようになり、最終的には、ユーザにとって最適な処理が行われることになる。
即ち、ユーザが、走行方向を、設定軌跡に沿ったものに修正するように、操作部58を操作しているうちに、自動車は、徐々に、設定軌跡に沿って自動走行するようになる。
また、図14の最適化装置54においても、図3のNR回路と同様に、ユーザによる操作部58の操作にしたがい、自動車の実際の走行方向が設定軌跡に沿ったものにあるように、補正部1で行われる補正処理(図5)で用いられる重みWが変更される。即ち、自動車の走行方向が所望の方向となるように、ユーザが操作部58を操作すると、演算部53(図13)が出力する入力信号としての走行方向θが変化し、その走行方向θから求められる入力信頼度、さらには、その入力信頼度から求められる出力信頼度も変化する。この入力信頼度および出力信頼度の変化によって、重み計算部25で求められる重みも変化し、この変化した重みは、重み補正部26を経由して、補正部1に供給される。そして、補正部1では、このようにして供給される重みを用いて、式(8)で表される補正処理が行われる。従って、ユーザが操作部58を操作した場合には、そのユーザの操作により式(8)の重みが変更され、図3のNR回路で説明した場合と同様に、当然に、式(8)で表される処理(補正処理)の内容も変更することとなるから、図14の最適化装置54でも、ユーザの操作にしたがい、その「処理の内容」が、ユーザにとって所望の走行方向が得られるように変更されているということができる。
さらに、図14の最適化装置54でも、図3のNR回路と同様に、ユーザから十分な数の学習対が入力されていない場合や、精度の高い近似が可能な学習対が入力されていない場合には、入力信頼度と出力信頼度とから自動的に求められる重みが、補正部1における補正処理に用いられ、ユーザから精度の高い近似が可能な学習対が入力された場合には、その学習対を用いて学習が行われることにより求められたパラメータ制御データaおよびbによって求められる補正重みが、補正部1における補正処理に用いられる。即ち、十分な数の学習対や、精度の高い近似が可能な学習対が得られていない場合と、精度の高い近似が可能な学習対が得られた場合とで、補正処理に用いられる重みを算出する体系が変化する。
従って、図14の最適化装置54でも、図3のNR回路と同様に、ユーザの操作にしたがい、その「処理の内容」も、さらには、その「処理の構造」も変更され、これにより、設定軌跡に沿った走行方向に、自動車が自動走行するようになっている。
なお、例えば、特開平7-13625号公報には、田植機等の作業車の走行制御装置が開示されており、この走行制御装置においては、ユーザの操作状態と、ジャイロセンサ等の検出結果に基づく情報との差が少なくなるように、自動操縦状態における制御パラメータの補正量が演算されるようになっている。従って、図13の自動走行装置は、ユーザの操作に基づいて、自動走行(自動操縦)のためのパラメータの補正量が変化する点において、特開平7-13625号公報に記載の走行制御装置と共通する。
しかしながら、図13の自動走行装置は、ユーザの操作に応じて供給される操作信号が、学習に用いることができるかどうかを判定する点、操作信号が学習に用いることのできる学習用操作信号である場合には、その学習用操作信号に基づいて、入力信号を補正する重みを補正するパラメータ制御データを学習する点において、スイッチを手動で切り替えて、手動操縦制御モードとした場合にのみ、自動操縦状態における制御パラメータの補正量が演算される特開平7-13625号公報に記載の走行制御装置と大きく異なる。
かかる相違がある結果、特開平7-13625号公報に記載の走行制御装置では、ユーザが、適切な自動操縦が行われていないと感じるたびに、スイッチを切り替え、手動操縦制御モードとし、制御パラメータの補正量の演算の終了後に、再び、スイッチを切り替え、自動操縦制御モードとしなければならず、従って、ユーザに煩わしさを感じさせることおそれがある。
これに対して、図13の自動走行装置では、ユーザの操作に応じて供給される操作信号が、学習に用いることができるかどうかを判定し、さらに、学習に用いることのできる学習用操作信号である場合には、その学習用操作信号に基づいて、入力信号を補正する重みを補正するパラメータ制御データを学習するので、ユーザが、上述のようなスイッチの切り替えを行わなくても、適切な自動走行が行われるようになる。即ち、ユーザが知らないうちに、ユーザの操作の学習が行われるので、ユーザが走行方向を修正する操作をしているうちに、学習が進み、徐々に、ユーザが操作を行わなくても、自動車が設定軌跡に沿って走行するようになる。
さらに、図13の自動走行装置は、ユーザの操作に対応して、処理の構造が変化するが、その点においても、特開平7-13625号公報に記載の走行制御装置と異なる。
次に、図17は、図13の最適化装置54の他の構成例を示している。なお、図中、図14における場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。
図3および図9のNR回路、並びに図14の最適化装置54においては、ユーザの操作に基づいて得られる学習対を用いて、補正パラメータを制御するパラメータ制御データの学習が行われるようになっていたが、図17の最適化装置54では、ユーザの操作に基づいて得られる学習対を用いて、補正パラメータ自体の学習が行われるようになっている。
即ち、図17の実施の形態では、補正部1は、補正量計算部71と演算器72で構成され、学習部2は、学習用データメモリ33、学習情報メモリ35、判定制御部36、操作信号処理部60、教師データ生成部73、生徒データ生成部74、補正パラメータ計算部75、および補正パラメータメモリ76から構成されている。
補正量計算部71には、学習部2の補正パラメータメモリ76から、後述するような補正パラメータが供給されるようになっており、補正量計算部71は、その補正パラメータを用いて、入力信号としての走行方向θを補正する補正量を計算し、演算器72に供給する。
演算器72には、補正量計算部71から補正量が供給される他、入力信号としての走行方向θが、演算部53(図13)から供給されるようになっており、演算器72は、入力信号としての走行方向θを、それに補正量を加算することで補正し、その補正後の走行方向(補正走行方向)を、出力信号として、自動走行制御部55(図13)に出力する。
教師データ生成部73は、操作信号処理部60から学習メッセージを受信した直後に供給される入力信号としての走行方向を、教師データとして、学習用データメモリ33に供給する。生徒データ生成部74は、操作信号処理部60から学習メッセージを受信した直前に供給される入力信号としての走行方向を、生徒データとして、学習用データメモリ33に供給する。
補正パラメータ計算部75は、判定制御部36の制御の下、学習用データメモリ33に記憶された学習用データとしての教師データおよび生徒データ、さらには、必要に応じて、学習情報メモリ35に記憶された学習情報を用いて、所定の統計的な誤差を最小にする補正パラメータを、新たな学習情報を演算することにより学習し、判定制御部36に供給する。また、補正パラメータ計算部75は、学習によって得られた新たな学習情報によって、学習情報メモリ35の記憶内容を更新する。
補正パラメータメモリ76は、判定制御部36が出力する補正パラメータを記憶する。
以上のように構成される最適化装置54では、演算部53から供給される走行方向θが、次のように補正される。
即ち、ジャイロセンサ51(図13)が出力する時刻tのヨーレートを、r’とすると、演算部53では、走行方向が、式(32)におけるrを、r’に置き換えた式から計算される。
いま、ジャイロセンサ51が出力するヨーレートr’に含まれる誤差をe
rとするとともに、真のヨーレートをrとすることとすると、ジャイロセンサ51が出力するヨーレートr’は、次式で表される。
・・・(33)
演算部53において、ジャイロセンサ51が出力するヨーレートr’から計算される走行方向θ’は、式(32)と(33)から、次のようになる。
・・・(34)
従って、演算部53で求められる走行方向θ’と、真のヨーレートrから求められる真の走行方向θとの関係は、次式で示すようになる。
・・・(35)
ジャイロセンサ51が出力するヨーレートr’に含まれる誤差e
rが白色である場合には、式(35)の右辺第2項は、長期的にみれば、次式に示すように0になるから、特に問題はない。なお、短期的には、式(35)の右辺第2項は0にならないが、この場合は、図14の最適化装置54によって対処することができる。
・・・(36)
しかしながら、誤差erが有色である場合には、時間tの経過とともに、誤差erが蓄積され、演算部53で求められる走行方向θ’は、真の走行方向θから大きくずれることになる。
即ち、いま、説明を簡単にするために、ある一定方向に直進する自動走行を考えると、自動走行制御部55(図13)では、演算部53で求められる走行方向θ’が、図18に点線で示すように、一定となるような制御信号が生成される。
しかしながら、演算部53で求められる走行方向θ’に含まれる誤差erが有色である場合には、時間tの経過とともに、誤差erが蓄積されることから、演算部53で求められる走行方向θ’が、例えば、図18において実線で示すような曲線の軌跡を描くときが、自動車が真に直進しているときとなる。
このため、図17の最適化装置54は、入力信号として供給される演算部53からの走行方向θ’が、図18において実線で示す軌跡を描くように、その走行方向θ’を補正する補正パラメータa0,a1,・・・,aNを、ユーザからの学習用操作信号に基づいて学習する補正パラメータ学習処理を行い、その補正パラメータa0乃至aNを用いて、演算部53からの走行方向θ’を補正する補正処理を行うようになっている。
そこで、図19および図20を参照して、図17の最適化装置54が行う補正処理と補正パラメータ学習処理について説明する。なお、図15の実施の形態では、一定方向に直進する自動走行を行うこととしたが、図17の最適化装置54は、任意の軌跡に沿った自動走行に適用することが可能である。
まず最初に、図19のフローチャートを参照して、図17の最適化装置54が行う補正処理について説明する。
補正処理では、ステップS121において、補正量計算部71が、補正パラメータメモリ76に記憶された補正パラメータa0乃至aNを用いて、補正量を計算する。
即ち、ここでは、例えば、真の走行方向θが、補正パラメータa
0乃至a
Nと、入力信号としての演算部53からの走行方向θ’とを用いて、式(37)に示すように表されることとして、補正量が計算される。
・・・(37)
従って、式(37)から、補正量計算部71では、a0+a1t1 +a2t2+・・・+aNtNが、補正量として計算される。この補正量は、演算器72に供給される。
演算器72では、ステップS122において、入力信号としての演算器53からの走行方向θ’と、補正量とが加算され、その加算値(式(37)のθ)が、出力信号として出力され、次の入力信号のサンプルが供給されるのを待って、ステップS122に戻り、以下、同様の処理が繰り返される。
次に、図20のフローチャートを参照して、図17の最適化装置54が行う補正パラメータ学習処理について説明する。
補正パラメータ学習処理では、まず最初に、ステップS131において、操作信号処理部60が、学習用操作信号を、操作部58(図13)から受信したかどうかを判定し、受信していないと判定した場合、ステップS131に戻る。
また、ステップS131において、操作部58から、学習用操作信号を受信したと判定された場合、即ち、例えば、操作部58が、その操作の開始後、第1の時間t1以上の間隔をあけることなく、第2の時間t2以上連続して操作され、その後、第3の時間t3以上連続して、その操作が停止された場合や、操作部58の操作の開始後、第3の時間t3以上連続して、その操作が停止された場合など、ユーザが、自動車が所望の走行方向を向くように、操作部58の操作を行ったと判定することができる場合、ステップS132に進み、教師データ生成部73が教師データを生成するとともに、生徒データ生成部74が生徒データを生成する。
即ち、操作信号処理部60は、学習用操作信号を受信した場合、その旨の学習メッセージを、教師データ生成部73および生徒データ生成部74に供給する。教師データ生成部73は、学習メッセージを受信すると、その直後に供給される入力信号としての走行方向を、教師データとして取得し、学習用データメモリ33に供給する。
即ち、いまの場合、教師データとしては、自動車が所望の方向に向くように、ユーザが、ハンドルとしての操作部58を操作した後の走行方向を用いる必要がある。そこで、教師データ生成部73は、学習メッセージを受信した後に供給される入力信号としての走行方向θを、教師データとして、学習用データメモリ33に供給する。
また、生徒データ生成部32は、学習メッセージを受信すると、その直前に供給された入力信号としての走行方向、即ち、自動車が所望の方向を向く直前の走行方向を、生徒データとして、学習用データメモリ33に供給する。
その後、ステップS133に進み、学習用データメモリ33は、教師データ生成部31から教師データと生徒データのセットを記憶し、ステップS134に進む。
ステップS134では、補正パラメータ計算部75が、教師データと生徒データを対象として、式(22)乃至式(30)で説明した場合と同様の最小自乗法における足し込みを行う。
なお、ステップS134における足し込みは、上述した場合と同様に、学習情報メモリ35に記憶されている学習情報としての前回の足し込み結果を用いて行われる。また、ここでは、式(37)のθ’として、生徒データを用いて計算される式(37)のθとしての教師データの予測値と、対応する教師データとの自乗誤差の総和を最小にする補正パラメータa0乃至aNを求めるための足し込みが行われる。
補正パラメータ計算部75は、ステップS134において足し込みを行った後、その足し込み結果を、学習情報として、学習情報メモリ35に上書きする形で記憶させ、ステップS135に進む。
ステップS135では、補正パラメータ計算部75が、学習情報メモリ35に記憶された学習情報としての足し込み結果から、補正パラメータa1乃至aNを求めることが可能であるかどうかを判定する。
ステップS135において、補正パラメータa1乃至aNを求めることが可能でないと判定された場合、補正パラメータ計算部75は、その旨を、判定制御部36に供給し、ステップS139に進む。ステップS139では、判定制御部36は、補正パラメータとして、補正の禁止を表すディセーブル(disable)データを、補正パラメータメモリ76に供給して記憶させる。そして、ステップS131に戻り、以下、同様の処理が繰り返される。
従って、補正パラメータa1乃至aNを求めることができるだけの学習情報が存在しない場合には、補正部1では、入力信号の補正は行われない。即ち、入力信号の補正量は0とされる。
一方、ステップS135において、補正パラメータを求めることが可能であると判定された場合、ステップS136に進み、補正パラメータ計算部75は、学習情報を用いて、補正パラメータa0乃至aNを求め、判定制御部36に供給して、ステップS137に進む。
ステップS137では、判定制御部36は、補正パラメータ計算部75からのパラメータ制御データa1乃至aNによって定義される式(37)にしたがい、学習用データメモリ33に記憶された各生徒データから、対応する教師データの予測値を求め、その予測値の予測誤差(学習用データメモリ33に記憶されている教師データに対する誤差)の自乗和を求める。さらに、判定制御部36は、その予測誤差の自乗和を、例えば、学習用データメモリ33に記憶されている学習対の数で除算した正規化誤差を求め、ステップS138に進む。
ステップS138では、判定制御部36は、正規化誤差が、所定の閾値S1より大(以上)であるかどうかを判定する。ステップS138において、正規化誤差が所定の閾値S1より大であると判定された場合、即ち、補正パラメータa1乃至aNによって定義される式(37)の一次式が、学習用データメモリ33に記憶された生徒データと教師データとの関係を、精度良く近似していない場合、ステップS139に進み、判定制御部36は、上述したように、補正パラメータとして、ディセーブルデータを、補正パラメータメモリ76に供給して記憶させる。そして、ステップS131に戻り、以下、同様の処理が繰り返される。
従って、補正パラメータa1乃至aNを求めることができても、その補正パラメータa1乃至aNによって定義される式(37)が、学習用データメモリ33に記憶された生徒データと教師データとの関係を、精度良く近似していない場合には、補正パラメータa1乃至aNを求めることができるだけの学習情報が存在しない場合と同様に、入力信号x(t)の補正量は0とされる。
一方、ステップS138において、正規化誤差が所定の閾値S1より大でないと判定された場合、即ち、補正パラメータa1乃至aNによって定義される式(37)の一次式が、学習用データメモリ33に記憶された生徒データと教師データとの関係を、精度良く近似している場合、ステップS140に進み、判定制御部36は、補正パラメータ計算部75からの補正パラメータa0乃至aNによって定義される式(37)の面と、学習用データメモリ33に記憶された最新の教師データおよび生徒データで規定される点との間の誤差εを求める。
そして、ステップS141に進み、判定制御部36は、誤差εの大きさが、所定の閾値S2より大(以上)であるかどうかを判定し、大でないと判定した場合、ステップS142をスキップして、ステップS143に進み、判定制御部36は、ステップS136で求められた補正パラメータa0乃至aNを、補正パラメータメモリ76に出力する。この場合、補正パラメータメモリ76は、判定制御部36からの補正パラメータa0乃至aNを上書きする形で記憶し、ステップS131に戻る。
一方、ステップS141において、誤差εの大きさが、所定の閾値S2より大であると判定された場合、ステップS142に進み、判定制御部36は、補正パラメータ計算部75を制御することにより、学習用データメモリ33に記憶された最近の教師データと生徒データのみを用いて、補正パラメータa0乃至aNを再計算させる。そして、ステップS143に進み、判定制御部36は、ステップS142で求められた補正パラメータa0乃至aNを、パラメータ制御部データメモリ37に出力して、上書きする形で記憶させ、ステップS131に戻る。
即ち、図20の実施の形態においても、図7の実施の形態における場合と同様に、ステップS140において、いままでに与えられた教師データおよび生徒データから求められた補正パラメータa0乃至aNから式(37)で定義される面と、最新の教師データおよび生徒データで規定される点との間の誤差εが求められる。
そして、この誤差εの大きさが、閾値S2より大でない場合には、ステップS136で求められた補正パラメータa0乃至aNによって定義される式(37)の面が、最新の教師データと生徒データで規定される点も含め、いままでに与えられた教師データと生徒データで規定される点のいずれも、比較的精度良く近似していると考えられるため、その補正パラメータa0乃至aNが、補正パラメータメモリ76に記憶される。
一方、誤差εの大きさが、閾値S2より大の場合には、ステップS136で求められた補正パラメータa0乃至aNによって定義される式(37)の面から、最新の教師データと生徒データで規定される点が比較的大きく離れていると考えられるため、判定制御部36は、ステップS142において、学習用データメモリ33に記憶された最近の教師データと生徒データのみを用いて、補正パラメータa0乃至aNを再計算させる。
従って、この場合も、ユーザの操作に応じて供給される学習用操作信号に基づいて、式(37)の補正パラメータa0乃至aNの学習が行われるので、ユーザの操作を、ユーザが知らないうちに学習することができ、さらに、その学習結果を用いて、ユーザにとって最適な処理を行うことが可能となる。
さらに、この場合、演算部53(図13)が出力する走行方向に含まれる誤差が有色であるときに、所定の設定軌跡に沿って、自動車を自動走行させることが可能となる。
また、図17の最適化装置54では、ユーザによる操作部58の操作にしたがい、自動車の実際の走行方向が設定軌跡に沿ったものにあるように、補正部1で行われる補正処理(図5)で用いられる補正パラメータが変更される。即ち、自動車の走行方向が所望の方向となるように、ユーザが操作部58を操作すると、演算部43(図13)が出力する、操作部58の操作直前と直後の入力信号としての走行方向θそれぞれを、それぞれ生徒データと教師データとして、補正パラメータの学習が行われ、これにより、補正パラメータが変更される。この変更された補正パラメータは、補正部1に供給され、補正部1では、その補正パラメータを用いて補正量が計算され、その補正量によって、入力信号の補正処理(図19)が行われる。従って、ユーザが操作部58を操作した場合には、そのユーザの操作により式(37)の補正パラメータが変更されることにより、当然に、式(37)で表される処理(補正処理)の内容も変更することとなるから、図17の最適化装置54でも、ユーザの操作にしたがい、その「処理の内容」が、ユーザにとって所望の走行方向が得られるように変更されているということができる。
さらに、図17の最適化装置54では、ユーザから十分な数の学習対が入力されていない場合や、精度の高い近似が可能な学習対が入力されていない場合には、補正部1における入力信号の補正量が0とされ、ユーザから精度の高い近似が可能な学習対が入力された場合には、その学習対を用いて学習が行われることにより求められた補正パラメータによって求められる補正量によって、入力信号の補正が行われる。即ち、十分な数の学習対や、精度の高い近似が可能な学習対が得られていない場合と、精度の高い近似が可能な学習対が得られた場合とで、補正部1の補正処理に用いられる重みを算出する体系が変化する。
従って、図17の最適化装置54でも、ユーザの操作にしたがい、その「処理の内容」も、さらには、その「処理の構造」も変更され、これにより、設定軌跡に沿った走行方向に、自動車が自動走行するようになっている。
ここで、図20の実施の形態では(図7および図12の実施の形態おいても同様)、ステップS140において、補正パラメータ計算部75からの補正パラメータa0乃至aNによって定義される式(37)の面と、最新の教師データおよび生徒データで規定される点との間の誤差εを求め、以降の処理を行うようにしたが、ステップS140では、最近の複数の教師データと生徒データが供給される前にステップS136で求められた補正パラメータa0乃至aNによって定義される式(37)の面と、最近の複数の教師データおよび生徒データで規定される点それぞれとの間の誤差εを求め、その複数の誤差εに基づいて、以降の処理を行うようにすることも可能である。
なお、図13の最適化装置54は、図14や図17に示した他、例えば、図9に示した最適化装置を利用して構成することも可能である。
次に、上述した一連の処理は、ハードウェアにより行うこともできるし、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。
そこで、図21は、上述した一連の処理を実行するプログラムがインストールされるコンピュータの一実施の形態の構成例を示している。
プログラムは、コンピュータに内蔵されている記録媒体としてのハードディスク105やROM103に予め記録しておくことができる。
あるいはまた、プログラムは、フロッピー(登録商標)ディスク、CD-ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体111に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体111は、いわゆるパッケージソフトウエアとして提供することができる。
なお、プログラムは、上述したようなリムーバブル記録媒体111からコンピュータにインストールする他、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、コンピュータに無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを、通信部108で受信し、内蔵するハードディスク105にインストールすることができる。
コンピュータは、CPU(Central Processing Unit)102を内蔵している。CPU102には、バス101を介して、入出力インタフェース110が接続されており、CPU102は、入出力インタフェース110を介して、ユーザによって、キーボードや、マウス、マイク等で構成される入力部107が操作等されることにより指令が入力されると、それにしたがって、ROM(Read Only Memory)103に格納されているプログラムを実行する。あるいは、また、CPU102は、ハードディスク105に格納されているプログラム、衛星若しくはネットワークから転送され、通信部108で受信されてハードディスク105にインストールされたプログラム、またはドライブ109に装着されたリムーバブル記録媒体111から読み出されてハードディスク105にインストールされたプログラムを、RAM(Random Access Memory)104にロードして実行する。これにより、CPU102は、上述したフローチャートにしたがった処理、あるいは上述したブロック図の構成により行われる処理を行う。そして、CPU102は、その処理結果を、必要に応じて、例えば、入出力インタフェース110を介して、LCD(Liquid CryStal Display)やスピーカ等で構成される出力部106から出力、あるいは、通信部108から送信、さらには、ハードディスク105に記録等させる。
ここで、本明細書において、コンピュータに各種の処理を行わせるためのプログラムを記述する処理ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含むものである。
また、プログラムは、1のコンピュータにより処理されるものであっても良いし、複数のコンピュータによって分散処理されるものであっても良い。さらに、プログラムは、遠方のコンピュータに転送されて実行されるものであっても良い。
以上、本発明を、入力信号からのノイズ除去や、自動走行に適用した場合について説明したが、本発明は、ノイズ除去や自動走行以外の、例えば、信号の周波数特性の変換その他のアプリケーションに広く適用可能である。