(57)【特許請求の範囲】
【請求項１】
車両に搭載された内燃機関に適用されて、気筒間の燃焼状態のばらつきを伴う同内燃機関の既定の運転状態を検出する内燃機関の状態検出システムであり、
各気筒の燃焼トルクの発生期間における前記内燃機関のクランク軸の回転速度の気筒間差に関する情報を含む変数である回転波形変数、及び前記車両が走行している路面の状態に関する変数である路面状態変数を入力とし、気筒間の燃焼状態のばらつき度合いに関する変数である燃焼状態変数を出力とする写像であって、機械学習によって学習されたパラメータに基づく前記回転波形変数及び前記路面状態変数の結合演算により前記燃焼状態変数の値を出力する写像を検出用写像としたとき、
前記検出用写像を規定するデータである写像データを記憶した記憶装置と、
前記クランク軸の回転挙動を検出するセンサの出力に基づく前記回転波形変数の値を取得するとともに路面の状態を検出するセンサの出力に基づく前記路面状態変数の値を取得する取得処理、及び前記取得処理を通じて取得した前記回転波形変数及び前記路面状態変数のそれぞれの値を入力とした前記検出用写像の出力値に基づいて前記内燃機関が前記既定の運転状態にあるか否かを判定する判定処理、を実行する実行装置と、
を備えた内燃機関の状態検出システム。
【請求項２】
前記既定の運転状態は、失火が発生した状態である請求項１に記載の内燃機関の状態検出システム。
【請求項３】
前記既定の運転状態は、気筒間の空燃比のばらつきが生じた状態である請求項１に記載の内燃機関の状態検出システム。
【請求項４】
前記路面状態変数は、前記車両が走行している路面が舗装路であるのか未舗装路であるのかを示す変数である請求項１〜３のいずれか一項に記載の内燃機関の状態検出システム。
【請求項５】
前記実行装置は、前記判定処理により前記内燃機関が前記既定の運転状態にあると判定されたときに、ハードウェアを操作して前記既定の運転状態に対処するための対処処理を実行する請求項１〜４のいずれか一項に記載の内燃機関の状態検出システム。
【請求項６】
前記判定処理は、前記取得処理を通じて取得した前記回転波形変数及び前記路面状態変数の値を入力とする前記検出用写像の出力値である前記燃焼状態変数を算出する出力値算出処理を含み、
前記実行装置は、前記車両に搭載された第１実行装置と前記車両とは別の機器に搭載された第２実行装置とを含み、
前記第１実行装置は、前記取得処理と、前記出力値算出処理の算出結果に基づく信号を受信する車両側受信処理と、を実行し、
前記第２実行装置は、前記出力値算出処理と、前記出力値算出処理の算出結果に基づく信号を前記車両に送信する外部側送信処理と、を実行する
請求項１〜５のいずれか一項に記載の内燃機関の状態検出システム。
【請求項７】
請求項６に記載の前記第２実行装置及び前記記憶装置を備えるデータ解析装置。
【請求項８】
請求項６に記載の前記第１実行装置を備える車両。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は車両に搭載された内燃機関において、気筒間の燃焼状態のばらつきを伴う運転状態、例えば失火や空燃比の気筒間のばらつきを検出するための内燃機関の状態検出システム、及び同状態検出システムを構成するデータ解析装置並びに車両に関するものである。
【背景技術】
【０００２】
内燃機関では、失火や気筒間の空燃比のばらつき等により気筒間の燃焼状態のばらつきが生じるとクランク軸の回転変動が大きくなる。そのため、クランク軸の回転変動パターンに基づいて、失火や気筒間の空燃比のばらつき等を検出することが可能である。例えば特許文献１には、既定周期毎にサンプリングした内燃機関のクランク軸の回転速度の時系列データを入力層に入力し、失火が生じた気筒の情報を出力層から出力するように構成した階層型神経回路モデルを用いて失火を検出する失火検出システムが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平４−９１３４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、路面に凹凸がある場合には、車両に振動が生じこの振動がクランク軸に伝達される。すなわち、クランク軸の回転挙動には、路面からの振動が重畳する。そのため、走行中の車両においては、クランク軸の回転変動のパターンに基づく失火等の検出精度が低くなる。
【課題を解決するための手段】
【０００５】
以下、上記課題を解決するための手段及びその作用効果について記載する。
上記課題を解決するための内燃機関の状態検出システムは、車両に搭載された内燃機関に適用されて、気筒間の燃焼状態のばらつきを伴う同内燃機関の既定の運転状態を検出する内燃機関の状態検出システムである。この状態検出システムは、各気筒の燃焼トルクの発生期間における前記内燃機関のクランク軸の回転速度の気筒間差に関する情報を含む変数である回転波形変数、及び前記車両が走行している路面の状態に関する変数である路面状態変数を入力とし、気筒間の燃焼状態のばらつき度合いに関する変数である燃焼状態変数を出力とする写像であって、機械学習によって学習されたパラメータに基づく前記回転波形変数及び前記路面状態変数の結合演算により前記燃焼状態変数の値を出力する写像を検出用写像としたとき、前記検出用写像を規定するデータである写像データを記憶した記憶装置と、前記クランク軸の回転挙動を検出するセンサの出力に基づく前記回転波形変数の値を取得するとともに路面の状態を検出するセンサの出力に基づく前記路面状態変数の値を取得する取得処理、及び前記取得処理を通じて取得した前記回転波形変数及び前記路面状態変数のそれぞれの値を入力とした前記検出用写像の出力値に基づいて前記内燃機関が前記既定の運転状態にあるか否かを判定する判定処理、を実行する実行装置と、を備えている。
【０００６】
各気筒の燃焼状態にばらつきが生じると、各気筒の燃焼トルクに差異が生じるため、各気筒の燃焼トルクの発生期間におけるクランク軸の回転速度に気筒間差が生じる。こうしたクランク軸の回転速度の気筒間差に関する情報は、クランク軸の回転挙動を検出するセンサの出力から取得できる。燃焼トルクの発生期間におけるクランク軸の回転速度の気筒間差が単純に各気筒の燃焼状態のばらつきのみに起因して生じるのであれば、同回転速度の気筒間差に関する情報から、失火や気筒間空燃比インバランスのような気筒間の燃焼状態のばらつきを伴う内燃機関の運転状態を精度良く検出できることになる。これに対して上記構成では、気筒間の燃焼状態のばらつきが燃焼トルクの発生期間のクランク軸の回転速度の気筒間差を生じさせることに鑑み、同回転速度の気筒間差の情報を含む回転波形変数を検出用写像への入力に含めている。
【０００７】
また、車両に搭載された内燃機関では、車両が走行している路面に凹凸がある場合には、車両に振動が生じ、この振動がクランク軸に伝達される。そのため、路面の状態はクランク軸の回転挙動に影響を与える。これに対して上記構成では、路面の状態に関する路面状態変数も、検出用写像の入力に含めている。そして、上記構成では、機械学習により学習されたパラメータに基づく回転波形変数及び路面状態変数の結合演算により算出した燃焼状態変数の値に基づき、上記既定の運転状態の発生の有無を判定している。ここでのパラメータは、上記のような回転波形変数及び路面状態変数のそれぞれが様々な値を取るときの上記既定の運転状態の発生の有無に基づき学習できる。そのため、上記構成によれば、車両が走行している路面の状態が与える影響を踏まえたかたちで燃焼状態変数の算出を実施できる。したがって、上記構成によれば、車両に搭載された内燃機関における上記既定の運転状態の検出精度を向上できる。
【０００８】
上記の状態検出システムは、失火が発生した状態の検出を行うシステムとして構成できる。また、気筒間の空燃比のばらつきが生じた状態の検出を行うシステムとして構成できる。
【０００９】
また、例えば、上記の状態検出システムにおける路面状態変数としては、車両が走行している路面が舗装路であるのか未舗装路であるのかを示す変数を用いることができる。
また、上記状態検出システムの一態様では、前記実行装置は、前記判定処理により前記内燃機関が前記既定の運転状態にあると判定されたときに、ハードウェアを操作して前記既定の運転状態に対処するための対処処理を実行する。対処処理としては、例えば、内燃機関が既定の運転状態にあることを乗員に報知する処理や、既定の運転状態の解消や軽減を図る処理を実行すればよい。
【００１０】
上記状態検出システムの一態様では、前記判定処理は、前記取得処理を通じて取得した前記回転波形変数及び前記路面状態変数の値を入力とする前記検出用写像の出力値である前記燃焼状態変数を算出する出力値算出処理を含み、前記実行装置は、前記車両に搭載された第１実行装置と前記車両とは別の機器に搭載された第２実行装置とを含む。そして、前記第１実行装置は、前記取得処理と、前記出力値算出処理の算出結果に基づく信号を受信する車両側受信処理と、を実行する。そして、前記第２実行装置は、前記出力値算出処理と、前記出力値算出処理の算出結果に基づく信号を前記車両に送信する外部側送信処理と、を実行する。
【００１１】
こうした場合、演算負荷が高い出力値算出処理が車両とは別の機器で行われることになる。そのため、車両側の演算負荷を軽減できる。なお、こうした場合の状態検出システムを構成するものとして、上記第２実行装置及び上記記憶装置を備えるデータ解析装置や第１実行装置を備える車両が考えられる。
【図面の簡単な説明】
【００１２】
【図１】第１実施形態の状態検出システム及び適用対象となる内燃機関を搭載した車両の駆動系の構成を示す図。
【図２】同実施形態における失火検出処理の手順を示すフローチャート。
【図３】同実施形態における路面状態変数の算出処理の手順を示すフローチャート。
【図４】第２実施形態の状態検出システムの構成を示す図。
【図５】（ａ）及び（ｂ）は、第２実施形態の状態検出システムが実行する処理の手順を示すフローチャート。
【図６】第３実施形態における失火検出処理の手順を示すフローチャート。
【図７】第３実施形態における写像の入力変数を示すタイムチャート。
【図８】（ａ）及び（ｂ）は、第４実施形態の状態検出システムが実行する処理の手順を示すフローチャート。
【図９】第５実施形態におけるインバランス検出処理の手順を示すフローチャート。
【図１０】第５実施形態におけるインバランスへの対処処理の手順を示すフローチャート。
【図１１】（ａ）及び（ｂ）は、第６実施形態の状態検出システムが実行する処理の手順を示すフローチャート。
【発明を実施するための形態】
【００１３】
（第１実施形態）
以下、内燃機関の状態検出システムの第１実施形態を、図１〜図３を参照して説明する。
【００１４】
図１に示す車両ＶＣに搭載された内燃機関１０において、吸気通路１２には、スロットルバルブ１４が設けられている。吸気通路１２から吸入された空気は、吸気バルブ１６が開弁することによって各気筒＃１〜＃４の燃焼室１８に流入する。内燃機関１０においては燃焼室１８に露出するようにして、燃料を噴射する燃料噴射弁２０と、火花放電を生じさせる点火装置２２とが設けられている。燃焼室１８において、空気と燃料との混合気は、燃焼に供され、燃焼によって生じたエネルギは、クランク軸２４の回転エネルギとして取り出される。燃焼に供された混合気は、排気バルブ２６の開弁に伴って、排気として、排気通路２８に排出される。排気通路２８には、酸素吸蔵能力を有した触媒３０が設けられている。排気通路２８は、ＥＧＲ通路３２を介して吸気通路１２に連通されている。ＥＧＲ通路３２には、その流路断面積を調整するＥＧＲバルブ３４が設けられている。
【００１５】
クランク軸２４の回転動力は、吸気側バルブタイミング可変装置４０を介して吸気側カム軸４２に伝達される一方、排気側バルブタイミング可変装置４４を介して排気側カム軸４６に伝達される。吸気側バルブタイミング可変装置４０は、吸気側カム軸４２とクランク軸２４との相対的な回転位相差を変更する。排気側バルブタイミング可変装置４４は、排気側カム軸４６とクランク軸２４との相対的な回転位相差を変更する。
【００１６】
内燃機関１０のクランク軸２４には、トルクコンバータ６０を介して変速装置６４の入力軸６６が連結可能となっている。トルクコンバータ６０は、ロックアップクラッチ６２を備えており、ロックアップクラッチ６２が締結状態となることにより、クランク軸２４と入力軸６６とが連結される。変速装置６４の出力軸６８には、駆動輪６９が機械的に連結されている。なお、本実施形態では、変速装置６４は、１速から６速までの変速比を変更可能な有段変速装置である。
【００１７】
クランク軸２４には、クランク軸２４の複数個（ここでは、３４個）の回転角度のそれぞれを示す歯部５２が設けられたクランクロータ５０が結合されている。クランクロータ５０には、基本的には、１０°ＣＡ間隔で歯部５２が設けられているものの、隣接する歯部５２間の間隔が３０°ＣＡとなる箇所である欠け歯部５４が１箇所設けられている。これは、クランク軸２４の基準となる回転角度を示すためのものである。
【００１８】
制御装置７０は、内燃機関１０を制御対象とし、その制御量であるトルクや排気成分比率等を制御するために、スロットルバルブ１４や、燃料噴射弁２０、点火装置２２、ＥＧＲバルブ３４、吸気側バルブタイミング可変装置４０、排気側バルブタイミング可変装置４４を操作する。なお、図１には、スロットルバルブ１４、燃料噴射弁２０、点火装置２２、ＥＧＲバルブ３４、吸気側バルブタイミング可変装置４０、排気側バルブタイミング可変装置４４のそれぞれの操作信号ＭＳ１〜ＭＳ６を記載している。
【００１９】
制御装置７０は、制御量の制御に際し、上記歯部５２間の角度間隔毎、すなわち欠け歯部５４を除き１０°ＣＡ毎のパルスを出力するクランク角センサ８０の出力信号Ｓｃｒや、エアフローメータ８２によって検出される吸入空気量Ｇａ、触媒３０の上流側に設けられた空燃比センサ８３の検出値である上流側検出値Ａｆｕを参照する。また制御装置７０は、水温センサ８４によって検出される内燃機関１０の冷却水の温度である水温ＴＨＷや、シフト位置センサ８６によって検出される変速装置６４のシフト位置Ｓｆｔ、加速度センサ８８によって検出される車両ＶＣの上下方向の加速度Ｄａｃｃを参照する。
【００２０】
制御装置７０は、ＣＰＵ７２と、ＲＯＭ７４と、電気的に書き換え可能な不揮発性メモリである記憶装置７６と、周辺回路７７と、を備え、それらがローカルネットワーク７８によって通信可能とされたものである。なお、周辺回路７７は、内部の動作を規定するクロック信号を生成する回路や、電源回路、リセット回路等を含む。
【００２１】
制御装置７０は、ＲＯＭ７４に記憶されたプログラムをＣＰＵ７２が実行することによって、上記制御量の制御を実行する。また、制御装置７０は、内燃機関１０の失火の有無を判定する処理を実行する。すなわち、本実施形態では、失火が発生している運転状態が既定の運転状態であり、こうした失火の有無の検出を行う制御装置７０が状態検出システムに対応する。
【００２２】
図２に失火の有無の検出を行う失火検出処理の手順を示す。図２に示す失火検出処理は、図１に示すＲＯＭ７４に記憶されたプログラム７４ａである失火検出プログラムをＣＰＵ７２が例えば所定周期で繰り返し実行することにより実現される。なお、以下では、先頭に「Ｓ」が付与された数字によって、各処理のステップ番号を表現する。
【００２３】
図２に示す一連の処理において、ＣＰＵ７２は、まず、微小回転時間Ｔ３０（１），Ｔ３０（２），…Ｔ３０（２４）を取得する（Ｓ１０）。微小回転時間Ｔ３０は、ＣＰＵ７２により、クランク角センサ８０の出力信号Ｓｃｒに基づき、クランク軸２４が３０°ＣＡ回転するのに要する時間を計時することによって算出される。ここで、微小回転時間Ｔ３０（１），Ｔ３０（２）等、カッコの中の数字が異なる場合、１燃焼サイクルである７２０°ＣＡ内の異なる回転角度間隔であることを示す。すなわち、微小回転時間Ｔ３０（１）〜Ｔ３０（２４）は、７２０°ＣＡの回転角度領域を３０°ＣＡで等分割した各角度間隔における回転時間を示す。
【００２４】
詳しくは、ＣＰＵ７２は、出力信号Ｓｃｒに基づき３０°ＣＡだけ回転した時間を計時し、これをフィルタ処理前時間ＮＦ３０とする。次にＣＰＵ７２は、フィルタ処理前時間ＮＦ３０を入力とするデジタルフィルタ処理を施すことによって、フィルタ処理後時間ＡＦ３０を算出する。そしてＣＰＵ７２は、所定期間における、例えば７２０°ＣＡにおけるフィルタ処理後時間ＡＦ３０の極大値と極小値との差が「１」となるようフィルタ処理後時間ＡＦ３０を正規化することによって、微小回転時間Ｔ３０を算出する。
【００２５】
次にＣＰＵ７２は、回転速度ＮＥ及び充填効率η、そして、点火時期ａｉｇや、空燃比の目標値Ａｆ＊、ＥＧＲ率Ｒｅｇｒ、水温ＴＨＷ、シフト位置Ｓｆｔ、路面状態変数ＳＲを取得する（Ｓ１２ａ）。
【００２６】
ここで、回転速度ＮＥは、ＣＰＵ７２によりクランク角センサ８０の出力信号Ｓｃｒに基づき算出され、充填効率ηは、ＣＰＵ７２により回転速度ＮＥ及び吸入空気量Ｇａに基づき算出される。なお、回転速度ＮＥは、圧縮上死点の出現間隔、すなわち本実施形態では１８０°ＣＡよりも大きい角度間隔だけクランク軸２４が回転する際の回転速度の平均値である。なお、回転速度ＮＥは、クランク軸２４の１回転以上の回転角度だけクランク軸２４が回転する際の回転速度の平均値とすることが望ましい。なお、ここでの平均値は、単純平均に限らず、例えば、指数移動平均処理でもよく、１回転以上の回転角度だけクランク軸２４が回転する際の例えば微小回転時間Ｔ３０等の複数のサンプリング値によって算出されるものとする。また、充填効率ηは、燃焼室１８内に充填される空気量を定めるパラメータである。また、ＥＧＲ率Ｒｅｇｒは、吸気通路１２に流入する流体に占めるＥＧＲ通路３２から吸気通路１２に流入する流体の割合である。また、路面状態変数ＳＲは、加速度Ｄａｃｃに基づきＣＰＵ７２によって算出されるパラメータであり、例えば、車両ＶＣが走行している路面に起伏が多い場合と少ない場合とで異なる２値の値をとりうる変数とすればよい。
【００２７】
なお、本実施形態では、路面状態変数ＳＲが「０」である場合には車両ＶＣが走行している路面が舗装路であることを示し、路面状態変数ＳＲが「１」である場合には車両ＶＣが走行している路面が未舗装路であることを示す。ちなみに、路面状態変数ＳＲの算出処理は、図３に示す処理を通じて行う。図３に示す処理は、ＲＯＭ７４に記憶されたプログラムをＣＰＵ７２が例えば所定周期で繰り返し実行することにより実現される。
【００２８】
図３に示す一連の処理において、ＣＰＵ７２は、まず、加速度Ｄａｃｃを取得する（Ｓ３０）。次にＣＰＵ７２は、路面状態変数ＳＲが「１」であるか否かを判定する（Ｓ３２）。ＣＰＵ７２は、路面状態変数ＳＲが「０」であると判定する場合（Ｓ３２：ＮＯ）、加速度Ｄａｃｃの変化量ΔＤａｃｃの絶対値が所定値ΔＤＨ以上である状態が所定時間継続したか否かを判定する（Ｓ３４）。ここで、変化量ΔＤａｃｃは、加速度Ｄａｃｃの前回値と今回値との差とすればよい。この処理は、車両ＶＣが走行している路面が舗装路であるか否かを判定する処理である。ＣＰＵ７２は、所定時間継続したと判定する場合（Ｓ３４：ＹＥＳ）、路面状態変数ＳＲに「１」を代入して路面状態変数ＳＲを更新する（Ｓ３６）。そして、ＣＰＵ７２は、この一連の処理を一旦終了する。
【００２９】
これに対しＣＰＵ７２は、路面状態変数ＳＲが「１」であると判定する場合（Ｓ３２：ＹＥＳ）、加速度Ｄａｃｃの変化量ΔＤａｃｃの絶対値が規定値ΔＤＬ（＜ΔＤＨ）以下となる状態が所定時間継続したか否かを判定する（Ｓ４０）。そしてＣＰＵ７２は、所定時間継続したと判定する場合（Ｓ４０：ＹＥＳ）、路面状態変数ＳＲに「０」を代入して路面状態変数ＳＲを更新する（Ｓ４２）。そして、ＣＰＵ７２は、この一連の処理を一旦終了する。
【００３０】
なお、ＣＰＵ７２は、Ｓ３４，Ｓ４０の処理において否定判定する場合（Ｓ３４：ＮＯ，Ｓ４０：ＮＯ）、路面状態変数ＳＲを更新せずにそのままこの一連の処理を一旦終了する。
【００３１】
Ｓ１２ａにおいて、回転速度ＮＥ、充填効率η、点火時期ａｉｇ、目標値Ａｆ＊、ＥＧＲ率Ｒｅｇｒ、水温ＴＨＷ、シフト位置Ｓｆｔ、路面状態変数ＳＲを取得すると、図２に示すように、ＣＰＵ７２は、失火が生じた確率を算出するための写像の入力変数ｘ（１）〜ｘ（３２）に、Ｓ１０，Ｓ１２ａの処理によって取得した値を代入する（Ｓ１４ａ）。詳しくは、ＣＰＵ７２は、「ｓ＝１〜２４」として、入力変数ｘ（ｓ）に微小回転時間Ｔ３０（ｓ）を代入する。すなわち、入力変数ｘ（１）〜ｘ（２４）は、微小回転時間Ｔ３０の時系列データとなる。本実施形態では、この微小回転時間Ｔ３０の時系列データが回転波形変数に相当する。また、ＣＰＵ７２は、入力変数ｘ（２５）に回転速度ＮＥを代入し、入力変数ｘ（２６）に充填効率ηを代入する。また、入力変数ｘ（２７）〜ｘ（３２）には、点火時期ａｉｇ、目標値Ａｆ＊、ＥＧＲ率Ｒｅｇｒ、水温ＴＨＷ、シフト位置Ｓｆｔ、路面状態変数ＳＲを代入する。
【００３２】
ここで、点火時期ａｉｇ、目標値Ａｆ＊、ＥＧＲ率Ｒｅｇｒは、内燃機関１０の操作部の操作によって燃焼室１８における混合気の燃焼速度を調整する調整変数である。すなわち、点火時期ａｉｇは、操作部としての点火装置２２の操作量であり、点火装置２２の操作によって燃焼速度を調整する調整変数である。目標値Ａｆ＊は、操作部としての燃料噴射弁２０を操作することによって燃焼速度を調整する調整変数である。ＥＧＲ率Ｒｅｇｒは、操作部としてのＥＧＲバルブ３４を操作することによって燃焼速度を調整する調整変数である。これら調整変数を入力変数ｘにするのは、混合気の燃焼速度によってクランク軸２４の挙動が変化することから、失火した場合のクランク軸２４の回転挙動も、失火をしていないときの混合気の燃焼速度によって変化する傾向があることに鑑みたものである。
【００３３】
一方、水温ＴＨＷは、内燃機関１０の状態変数であり、特に、ピストンとシリンダとの摩擦等、摺動部の摩擦を変化させるパラメータである。水温ＴＨＷによってもクランク軸２４の回転挙動が変化することに鑑み、本実施形態では、水温ＴＨＷを入力変数ｘにする。
【００３４】
また、シフト位置Ｓｆｔは、クランク軸２４に連結される駆動系装置の状態変数である。シフト位置Ｓｆｔが異なるもの同士では、クランク軸２４から駆動輪６９までの慣性定数が互いに異なることから、クランク軸２４の回転挙動が異なったものとなることに鑑み、シフト位置Ｓｆｔを入力変数ｘにする。
【００３５】
また、路面に凹凸があると、車両ＶＣに振動が生じ、この振動はクランク軸２４へと伝達される。このため、路面の状態によって、クランク軸２４の回転挙動が異なったものとなることから、本実施形態では、路面状態変数ＳＲを入力変数ｘにする。
【００３６】
次にＣＰＵ７２は、図１に示す記憶装置７６に記憶された写像データ７６ａによって規定される写像に入力変数ｘ（１）〜ｘ（３２）を入力することによって、気筒＃ｉ（ｉ＝１〜４）において失火が生じた確率Ｐ（ｉ）を、燃焼状態変数として算出する（Ｓ１６ａ）。写像データ７６ａは、Ｓ１０の処理によって取得された微小回転時間Ｔ３０（１）〜Ｔ３０（２４）に対応する期間において気筒＃ｉで失火が生じた確率Ｐ（ｉ）を出力可能な写像を規定するデータである。ここで、確率Ｐ（ｉ）は、入力変数ｘ（１）〜ｘ（３２）に基づき、実際に失火が生じたことのもっともらしさの大小を定量化したものである。ただし、本実施形態においては、気筒＃ｉにおいて失火が生じた確率Ｐ（ｉ）の最大値は、「１」よりも小さく、最小値は「０」よりも大きい値となる。すなわち、本実施形態において、確率Ｐ（ｉ）は、実際に失火が生じたことのもっともらしさの大小を「０」よりも大きく「１」よりも小さい所定領域内で連続的な値として定量化したものである。
【００３７】
本実施形態において、この写像は、中間層が１層のニューラルネットワークと、ニューラルネットワークの出力を規格化することによって、失火が生じた確率Ｐ（１）〜Ｐ（４）の和を「１」とするためのソフトマックス関数とによって構成されている。上記ニューラルネットワークは、入力側係数ｗＦｊｋ（ｊ＝０〜ｎ，ｋ＝０〜３２）と、入力側係数ｗＦｊｋによって規定される線形写像である入力側線形写像の出力のそれぞれを非線形変換する入力側非線形写像としての活性化関数ｈ（ｘ）を含む。本実施形態では、活性化関数ｈ（ｘ）として、ハイパボリックタンジェント「ｔａｎｈ（ｘ）」を例示する。また、上記ニューラルネットワークは、出力側係数ｗＳｉｊ（ｉ＝１〜４，ｊ＝０〜ｎ）と、出力側係数ｗＳｉｊによって規定される線形写像である出力側線形写像の出力のそれぞれを非線形変換する出力側非線形写像としての活性化関数ｆ（ｘ）を含む。本実施形態では、活性化関数ｆ（ｘ）として、ハイパボリックタンジェント「ｔａｎｈ（ｘ）」を例示する。なお、値ｎは、中間層の次元を示すものである。本実施形態において、値ｎは、入力変数ｘの次元（ここでは、３２次元）よりも小さい。また、入力側係数ｗＦｊ０は、バイアスパラメータであり、入力変数ｘ（０）を「１」と定義することによって、入力変数ｘ（０）の係数となっている。また、出力側係数ｗＳｉ０は、バイアスパラメータであり、これには「１」が乗算されるものとする。これは例えば、「ｗＦ００・ｘ（０）＋ｗＦ０１・ｘ（１）＋…」を恒等的に無限大と定義することによって実現できる。
【００３８】
詳しくは、ＣＰＵ７２は、入力側係数ｗＦｊｋ、出力側係数ｗＳｉｊ及び活性化関数ｈ（ｘ），ｆ（ｘ）によって規定されるニューラルネットワークの出力である確率原型ｙ（ｉ）を算出する。確率原型ｙ（ｉ）は、気筒＃ｉにおいて失火が生じた確率と正の相関を有するパラメータである。そして、ＣＰＵ７２は、確率原型ｙ（１）〜ｙ（４）を入力とするソフトマックス関数の出力によって、気筒＃ｉにおいて失火が生じた確率Ｐ（ｉ）を算出する。なお、以下の説明では、こうした写像を検出用写像と記載する。
【００３９】
次にＣＰＵ７２は、失火が生じた確率Ｐ（１）〜Ｐ（４）のうちの最大値Ｐ（ｍ）が閾値Ｐｔｈ以上であるか否かを判定する（Ｓ１８）。ここで、変数ｍは、１〜４のいずれかの値をとり、また、閾値Ｐｔｈは、「１／２」以上の値に設定されている。そして、ＣＰＵ７２は、閾値Ｐｔｈ以上であると判定する場合（Ｓ１８：ＹＥＳ）、確率が最大となった気筒＃ｍの失火の回数Ｎ（ｍ）をインクリメントする（Ｓ２０）。そしてＣＰＵ７２は、回数Ｎ（１）〜Ｎ（４）の中に、所定回数Ｎｔｈ以上となるものがあるか否かを判定する（Ｓ２２）。そしてＣＰＵ７２は、所定回数Ｎｔｈ以上となるものが存在すると判定する場合（Ｓ２２：ＹＥＳ）、特定の気筒＃ｑ（ｑは、１〜４のうちの１つ）で許容範囲を超える頻度の失火が生じているとして、フェールフラグＦに「１」を代入する（Ｓ２４）。なお、この際、ＣＰＵ７２は、失火が生じた気筒＃ｑの情報を記憶装置７６に記憶する等して少なくとも当該気筒＃ｑで失火が解消するまで保持することとする。
【００４０】
これに対し、ＣＰＵ７２は、最大値Ｐ（ｍ）が閾値Ｐｔｈ未満であると判定する場合（Ｓ１８：ＮＯ）、Ｓ２４の処理または後述するＳ２８の処理がなされてから所定期間が経過したか否かを判定する（Ｓ２６）。ここで所定期間は、１燃焼サイクルの期間よりも長く、望ましくは、１燃焼サイクルの１０倍以上の長さを有することが望ましい。
【００４１】
ＣＰＵ７２は、所定期間が経過したと判定する場合（Ｓ２６：ＹＥＳ）、回数Ｎ（１）〜Ｎ（４）を初期化するとともに、フェールフラグＦを初期化する（Ｓ２８）。
なお、ＣＰＵ７２は、Ｓ２４，Ｓ２８の処理が完了する場合や、Ｓ２２，Ｓ２６の処理において否定判定する場合には、図２に示す一連の処理を一旦終了する。
【００４２】
なお、制御装置７０では、既定の運転状態に対処するための対処処理として、フェールフラグＦが「１」になっている場合に、異常に対処することをユーザに促すべく、図１に示す警告灯９０を操作する報知処理を実行する。
【００４３】
ちなみに、上記写像データ７６ａは、例えば次のようにして生成されたものである。すなわち、テストベンチにてクランク軸２４にダイナモメータを接続した状態で内燃機関１０を稼働させ、気筒＃１〜＃４のそれぞれにおいて要求される燃料を噴射すべきタイミングのうちランダムに選択したタイミングでは燃料噴射を停止させる。そして燃料の噴射を停止させた気筒においては燃焼状態変数である確率Ｐ（ｉ）の値を「１」としたデータを教師データとし、燃料の噴射を停止させていない気筒においては、燃焼状態変数である確率Ｐ（ｉ）の値を「０」としたデータを教師データに含める。そして、Ｓ１４ａの処理によって生成する入力変数ｘ（１）〜ｘ（３２）の値の組である訓練データを用いて、Ｓ１６ａの処理と同様の処理によって、燃焼状態変数である確率Ｐ（ｉ）の値を算出する。こうして算出された確率Ｐ（ｉ）の値と教師データとの差を縮めるように、上記入力側係数ｗＦｊｋや出力側係数ｗＳｉｊの値を学習する。具体的には、例えば公差エントロピーを最小化するように、入力側係数ｗＦｊｋや出力側係数ｗＳｉｊの値を学習すればよい。
【００４４】
なお、本実施形態では、訓練データにはＳ１２ａにおいて取得する全てのパラメータを含め、Ｓ１４ａ相当の処理を実行し、入力変数ｘが３２次元の写像を用いる。ただし、ここでは、入力変数ｘ（０）を次元数に含めていない。また、路面状態変数ＳＲが路面に起伏が多い未舗装路であることを示す場合に対応する訓練データは、例えばダイナモメータによって車両に振動が加わった際にクランク軸２４に加わる負荷トルクを模擬して生成すればよい。また例えば内燃機関１０やダイナモメータ等を振動を生成可能な装置に載置し、振動を生じさせることで車両に振動が加わった際にクランク軸２４に加わる負荷トルクを模擬して訓練データを生成してもよい。
【００４５】
このように、本実施形態では、入力変数ｘに、燃焼速度を調整する調整変数や、内燃機関１０の状態変数、駆動系装置の状態変数、路面状態変数ＳＲを加えた。これらは、クランク軸２４の回転挙動に影響するパラメータであるものの、互いに隣り合う角度間隔の回転に要する時間同士の差に基づき失火の有無を判定する従来手法によっては、加味することが困難であったものである。すなわち、これらのパラメータを加味する場合、適合工数が膨大となって実現性に乏しい。これに対し、本実施形態では、機械学習を用いることによって、実用的な適合工数の範囲で、これらを加味して失火を判定するロジックを構築できる。
【００４６】
ここで、本実施形態の作用及び効果について説明する。
ＣＰＵ７２は、内燃機関１０の稼働時、微小回転時間Ｔ３０を逐次算出し、写像データ７６ａによって規定される検出用写像に１燃焼サイクル分の微小回転時間Ｔ３０を回転波形変数として入力することによって、気筒＃１〜＃４のそれぞれにおいて失火が生じた確率Ｐ（１）〜Ｐ（４）を算出する。ここで、微小回転時間Ｔ３０は、圧縮上死点の出現間隔である１８０°ＣＡよりも小さい角度間隔におけるクランク軸２４の回転速度を示すパラメータである。しかも、検出用写像には、１燃焼サイクルにおける３０°ＣＡ毎の微小回転時間Ｔ３０が入力される。さらに、微小回転時間Ｔ３０に施す演算に用いる入力側係数ｗＦｊｋ及び出力側係数ｗＳｉｊの値は、機械学習によって学習済みの値である。このため、クランク軸２４の微小なタイムスケールにおける回転挙動に基づき、失火が生じた確率Ｐ（ｉ）を算出することができる。このため、圧縮上死点の出現間隔程度の回転に要する時間についての、互いに隣り合う角度間隔同士における差に基づき失火の有無を判定する場合と比較すると、クランク軸２４の回転挙動についてのより詳細な情報に基づき失火の有無を判定できることから、失火の判定精度を高めやすい。
【００４７】
以上説明した本実施形態によれば、さらに以下に記載する作用効果が得られる。
（１）車両ＶＣに搭載された内燃機関１０では、車両ＶＣが走行している路面に凹凸がある場合には、車両ＶＣに振動が生じ、この振動がクランク軸２４に伝達される。このように、路面の状態はクランク軸２４の回転挙動に影響を与える。これに対して制御装置７０では、路面の状態に関する路面状態変数ＳＲも、検出用写像の入力に含めている。そして、制御装置７０では、機械学習により学習されたパラメータに基づく回転波形変数であるＴ３０（１）〜Ｔ３０（２４）及び路面状態変数ＳＲの結合演算により算出した燃焼状態変数である確率Ｐ（ｉ）の値に基づき、上記失火の発生の有無を判定している。そのため、車両ＶＣが走行している路面の状態が与える影響を踏まえたかたちで燃焼状態変数の算出を実施できる。したがって、車両ＶＣに搭載された内燃機関１０における失火の検出精度を向上できる。
【００４８】
（２）内燃機関１０の動作点を規定する動作点変数としての回転速度ＮＥ及び充填効率ηを検出用写像の入力とした。燃料噴射弁２０や点火装置２２等の内燃機関１０の操作部の操作量は、内燃機関１０の動作点に基づき定められる傾向がある。そのため、動作点変数は、各操作部の操作量に関する情報を含む変数である。したがって、動作点変数を検出用写像の入力とすることにより、各操作部の操作量に関する情報に基づき燃焼状態変数の値を算出することができ、ひいては操作量によるクランク軸２４の回転挙動の変化を反映して燃焼状態変数の値をより高精度に算出することができる。
【００４９】
また、動作点変数を入力変数とすることにより、回転波形変数と動作点変数との、機械学習によって学習されたパラメータである入力側係数ｗＦｊｋによる結合演算によって燃焼状態変数の値が算出される。このため、動作点変数毎に適合値を適合する必要が生じない。
【００５０】
（第２実施形態）
次に第２実施形態について、第１実施形態との相違点を中心に図面を参照しつつ説明する。本実施形態では、失火判定処理を車両の外部で行う。
【００５１】
図４に本実施形態にかかる状態検出システムを示す。なお、図４において、図１に示した部材に対応する部材については、便宜上同一の符号を付している。
図４に示す車両ＶＣ内の制御装置７０は、通信機７９を備えている。通信機７９は車両ＶＣの外部のネットワーク１１０を介してセンター１２０と通信するための機器である。
【００５２】
センター１２０は、複数の車両ＶＣから送信されるデータを解析する。センター１２０は、ＣＰＵ１２２と、ＲＯＭ１２４と、記憶装置１２６と、周辺回路１２７と、通信機１２９と、を備えており、それらがローカルネットワーク１２８によって通信可能とされるものである。ＲＯＭ１２４には、メインプログラム１２４ａが記憶されており、記憶装置１２６には、写像データ１２６ａが記憶されている。なお、本実施形態におけるメインプログラム１２４ａは失火検出メインプログラムである。写像データ１２６ａは、第１実施形態における写像データ７６ａと同一である。
【００５３】
図５に、本実施形態にかかる失火検出処理の手順を示す。図５（ａ）に示す処理は、図４に示すＲＯＭ７４に記憶されたサブプログラム７４ｃをＣＰＵ７２が実行することにより実現される。なお、本実施形態におけるサブプログラム７４ｃは失火検出サブプログラムである。また、図５（ｂ）に示す処理は、ＲＯＭ１２４に記憶されているメインプログラム１２４ａをＣＰＵ１２２が実行することにより実現される。また、図５において図２に示した処理に対応する処理については、便宜上同一のステップ番号を付している。以下では、失火検出処理の時系列に沿って、図５に示す処理を説明する。
【００５４】
車両ＶＣにおいてＣＰＵ７２は、図５（ａ）に示すＳ１０の処理を実行する。次にＣＰＵ７２は、回転速度ＮＥ、充填効率η、路面状態変数ＳＲを取得する（Ｓ１２）。なお、第１実施形態にかかる失火検出処理のＳ１２ａでは、回転速度ＮＥ、充填効率η、路面状態変数ＳＲに加えて、点火時期ａｉｇ、目標値Ａｆ＊、ＥＧＲ率Ｒｅｇｒ、水温ＴＨＷ、シフト位置Ｓｆｔを取得していたが、Ｓ１２では回転速度ＮＥ、充填効率η、路面状態変数ＳＲを取得する。
【００５５】
そして、ＣＰＵ７２は、通信機７９を操作することによって、それらＳ１０，Ｓ１２の処理において取得したデータを、車両ＶＣの識別情報とともにセンター１２０に送信する（Ｓ１５０）。
【００５６】
これに対し、センター１２０のＣＰＵ１２２は、図５（ｂ）に示すように、送信されたデータを受信し（Ｓ１６０）、受信したデータを用いたＳ１４〜Ｓ２０の処理を繰り返し実行する。
【００５７】
Ｓ１４の処理では、ＣＰＵ１２２は、失火が生じた確率を算出するための検出用写像の入力変数ｘ（１）〜ｘ（２７）に、Ｓ１０，Ｓ１２の処理によって取得した値を代入する。ここでは、ＣＰＵ１２２は、「ｓ＝１〜２４」として、入力変数ｘ（ｓ）に微小回転時間Ｔ３０（ｓ）を代入する。また、ＣＰＵ１２２は、入力変数ｘ（２５）に回転速度ＮＥを代入し、入力変数ｘ（２６）に充填効率ηを代入する。そして、ＣＰＵ１２２は、入力変数ｘ（２７）に路面状態変数ＳＲを代入する。
【００５８】
Ｓ１６の処理では、ＣＰＵ１２２は、図１に示す記憶装置１２６に記憶された写像データ１２６ａによって規定される検出用写像に入力変数ｘ（１）〜ｘ（２７）を入力することによって、気筒＃ｉ（ｉ＝１〜４）において失火が生じた確率Ｐ（ｉ）を、燃焼状態変数として算出する。
【００５９】
そしてＣＰＵ１２２は、Ｓ１４〜Ｓ２０の処理を繰り返し実行することにより、識別情報によって特定される同一の車両において所定期間内に特定の気筒の失火回数が所定回数Ｎｔｈ以上となったと判定する場合（Ｓ２２：ＹＥＳ）、失火が生じている旨判定する（Ｓ１６２）。これに対し、Ｓ１４〜Ｓ２０の処理を所定期間にわたって繰り返し実行した際、特定の気筒の失火回数が所定回数Ｎｔｈに満たない場合（Ｓ２６：ＹＥＳ）、正常判定をするとともに回数Ｎ（１）〜Ｎ（４）を初期化する（Ｓ１６４）。なお、ここでの所定期間は、Ｓ１６２の処理またはＳ１６４の処理がなされた時点を基準とする。
【００６０】
ＣＰＵ１２２は、Ｓ１６２，Ｓ１６４の処理が完了する場合、上記識別情報に基づき、通信機１２９を操作して、Ｓ１４〜Ｓ２０の処理の対象としたデータが送信された車両ＶＣに判定結果に関する信号を送信する（Ｓ１６６）。ここで、失火が生じた旨の判定結果の場合、判定結果に関する情報に失火が生じた気筒に関する情報を含めることとする。ＣＰＵ１２２は、Ｓ１６６の処理を完了する場合やＳ２２，Ｓ２６の処理において否定判定する場合には、図５（ｂ）に示す一連の処理を一旦終了する。
【００６１】
これに対し、車両ＶＣ内のＣＰＵ７２は、図５（ａ）に示すように、センター１２０から送信される判定結果に関する信号を受信すると（Ｓ１５２：ＹＥＳ）、判定結果が失火が生じた旨の結果であるか否かを判定する（Ｓ１５４）。そしてＣＰＵ７２は、失火が生じた旨の判定の場合（Ｓ１５４：ＹＥＳ）、Ｓ２４の処理に移行する一方、失火が生じていない旨の結果の場合（Ｓ１５４：ＮＯ）、フェールフラグＦを初期化する（Ｓ２８ｂ）。
【００６２】
なお、ＣＰＵ７２は、Ｓ２４，Ｓ２８ｂの処理が完了する場合や、Ｓ１５２の処理において否定判定する場合には、図５（ａ）に示す処理を一旦終了する。
このように、本実施形態では、失火の判定処理をセンター１２０において実行することにより、制御装置７０の演算負荷を軽減できる。
【００６３】
（第３実施形態）
以下、内燃機関の状態検出システムの第３実施形態について、第１実施形態との相違点を中心に図面を参照しつつ説明する。本実施形態の状態検出システムは、ＲＯＭ７４に記憶されたプログラム７４ａ、及び記憶装置７６に記憶された写像データ７６ａの内容以外は、第１実施形態のものと同じ構成とされている。
【００６４】
図６に本実施形態の失火検出処理の手順を示す。図６に示す処理は、ＲＯＭ７４に記憶されたプログラム７４ａである失火検出プログラムをＣＰＵ７２が、例えば所定周期で繰り返し実行することにより実現される。
【００６５】
図６に示す一連の処理において、ＣＰＵ７２は、まず、微小回転時間Ｔ３０を取得する（Ｓ２１０）。微小回転時間Ｔ３０は、ＣＰＵ７２により、クランク角センサ８０の出力信号Ｓｃｒに基づき、クランク軸２４が３０°ＣＡ回転するのに要する時間を計時することによって算出される。次にＣＰＵ７２は、Ｓ２１０の処理において取得した最新の微小回転時間Ｔ３０を、微小回転時間Ｔ３０（０）とし、より過去の値ほど、微小回転時間Ｔ３０（ｍ）の変数「ｍ」を大きい値とする（Ｓ２１２）。すなわち、「ｍ＝１，２，３，…」として、Ｓ２１２の処理がなされる直前における微小回転時間Ｔ３０（ｍ−１）を微小回転時間Ｔ３０（ｍ）とする。これにより、例えば、図６の処理が前回実行されたときにＳ２１０の処理により取得された微小回転時間Ｔ３０は、微小回転時間Ｔ３０（１）となる。
【００６６】
次に、ＣＰＵ７２は、Ｓ２１０の処理において取得された微小回転時間Ｔ３０が、気筒＃１〜＃４のいずれかの圧縮上死点前３０°ＣＡから圧縮上死点までの角度間隔の回転に要する時間であるか否かを判定する（Ｓ２１４）。そしてＣＰＵ７２は、圧縮上死点までの角度間隔の回転に要する時間であると判定する場合（Ｓ２１４：ＹＥＳ）、３６０°ＣＡだけ前に圧縮上死点となった気筒の失火の有無を判定すべく、まず、失火の有無の判定処理の入力とする回転波形変数の値を算出する。
【００６７】
すなわち、ＣＰＵ７２は、まず、圧縮上死点前３０°ＣＡから圧縮上死点までの角度間隔に関する微小回転時間Ｔ３０の互いに１８０°だけ離間した値同士の差を気筒間変数ΔＴａとして算出する（Ｓ２１６）。詳しくは、ＣＰＵ７２は、「ｍ＝１，２，３，…」として、気筒間変数ΔＴａ（ｍ−１）を、「Ｔ３０（６ｍ−６）−Ｔ３０（６ｍ）」とする。
【００６８】
図７に、気筒間変数ΔＴａを例示する。なお、本実施形態では、気筒＃１、気筒＃３、気筒＃４、気筒＃２の順に圧縮上死点が出現し、その順で燃焼行程となるものを例示している。図７には、Ｓ２１０の処理において気筒＃４の圧縮上死点前３０°ＣＡから圧縮上死点までの角度間隔の微小回転時間Ｔ３０（０）を取得することにより、失火の有無の検出対象が気筒＃１である例を示している。この場合、気筒間変数ΔＴａ（０）は、気筒＃４の圧縮上死点と、１つ前に圧縮上死点となった気筒＃３の圧縮上死点とのそれぞれに対応する微小回転時間Ｔ３０同士の差となる。図７には、気筒間変数ΔＴａ（２）が、失火の検出対象となる気筒＃１の圧縮上死点に対応する微小回転時間Ｔ３０（１２）と、気筒＃２の圧縮上死点に対応する微小回転時間Ｔ３０（１８）との差であることを記載している。
【００６９】
図６に戻り、ＣＰＵ７２は、気筒間変数ΔＴａ（０），ΔＴａ（１），ΔＴａ（２），…のうちの互いに７２０°ＣＡだけ離間した値同士の差である気筒間変数ΔＴｂを算出する（Ｓ２１８）。詳しくは、ＣＰＵ７２は、「ｍ＝１，２，３，…」として、気筒間変数ΔＴｂ（ｍ−１）を、「ΔＴａ（ｍ−１）−ΔＴａ（ｍ＋３）」とする。
【００７０】
図７に、気筒間変数ΔＴｂを例示する。図７には、気筒間変数ΔＴｂ（２）が、「ΔＴａ（２）−Ｔａ（６）」であることが記載されている。
次に、ＣＰＵ７２は、失火の検出対象となる気筒に対応する気筒間変数ΔＴｂと、それ以外の気筒に対応する気筒間変数ΔＴｂとの相対的な大きさの関係を示す変動パターン変数ＦＬを算出する（Ｓ２２０）。本実施形態では、変動パターン変数ＦＬ［０２］，ＦＬ［１２］，ＦＬ［３２］を算出する。
【００７１】
ここで、変動パターン変数ＦＬ［０２］は、「ΔＴｂ（０）／ΔＴｂ（２）」によって定義される。すなわち、変動パターン変数ＦＬ［０２］は、図７の例を用いると、失火の検出対象となる気筒＃１に対応する気筒間変数ΔＴｂ（２）で、その次の次に圧縮上死点となる気筒＃４に対応する気筒間変数ΔＴｂ（０）を除算した値である。また、変動パターン変数ＦＬ［１２］は、「ΔＴｂ（１）／ΔＴｂ（２）」によって定義される。すなわち、変動パターン変数ＦＬ［１２］は、図７の例を用いると、失火の検出対象となる気筒＃１に対応する気筒間変数ΔＴｂ（２）で、その次に圧縮上死点となる気筒＃３に対応する気筒間変数ΔＴｂ（１）を除算した値である。また、変動パターン変数ＦＬ［３２］は、「ΔＴｂ（３）／ΔＴｂ（２）」によって定義される。すなわち、変動パターン変数ＦＬ［３２］は、図７の例を用いると、失火の検出対象となる気筒＃１に対応する気筒間変数ΔＴｂ（２）で、その１つ前に圧縮上死点となっていた気筒＃２に対応する気筒間変数ΔＴｂ（３）を除算した値である。
【００７２】
次に、ＣＰＵ７２は、回転速度ＮＥ、充填効率η、及び路面状態変数ＳＲを取得する（Ｓ２２２）。なお、回転速度ＮＥ、充填効率η、及び路面状態変数ＳＲの取得の方法は、第１実施形態と同様である。
【００７３】
そして、ＣＰＵ７２は、検出対象となる気筒において失火が生じた確率に関する変数である失火変数ＰＲを出力する検出用写像の入力変数ｘ（１）〜ｘ（７）に、Ｓ２１８，Ｓ２２０の処理によって取得した回転波形変数の値と、Ｓ２２２の処理によって取得した変数の値とを代入する（Ｓ２２４）。すなわち、ＣＰＵ７２は、入力変数ｘ（１）に気筒間変数ΔＴｂ（２）を代入し、入力変数ｘ（２）に変動パターン変数ＦＬ［０２］を代入し、入力変数ｘ（３）に変動パターン変数ＦＬ［１２］を代入し、入力変数ｘ（４）に変動パターン変数ＦＬ［３２］を代入する。また、ＣＰＵ７２は、入力変数ｘ（５）に、回転速度ＮＥを代入し、入力変数ｘ（６）に充填効率ηを代入し、入力変数ｘ（７）に路面状態変数ＳＲを代入する。
【００７４】
次にＣＰＵ７２は、図１に示す記憶装置７６に記憶された写像データ７６ａによって規定される検出用写像に入力変数ｘ（１）〜ｘ（７）を入力することによって、検出用写像の出力値である失火変数ＰＲの値を算出する（Ｓ２２６）。すなわち、この実施形態では燃焼状態変数として失火変数ＰＲを算出する。
【００７５】
本実施形態において、この検出用写像は、中間層が１層のニューラルネットワークによって構成されている。上記ニューラルネットワークは、入力側係数ｗＦｊｋ（ｊ＝０〜ｎ，ｋ＝０〜７）と、入力側係数ｗＦｊｋによって規定される線形写像である入力側線形写像の出力のそれぞれを非線形変換する入力側非線形写像としての活性化関数ｈ（ｘ）を含む。本実施形態では、活性化関数ｈ（ｘ）として、ＲｅＬＵを例示する。なお、ＲｅＬＵは、入力と「０」とのうちの小さくない方を出力する関数である。ちなみに、ｗＦｊ０等は、バイアスパラメータであり、入力変数ｘ（０）は、「１」と定義されている。
【００７６】
また、上記ニューラルネットワークは、出力側係数ｗＳｉｊ（ｉ＝１〜２，ｊ＝０〜ｎ）と、出力側係数ｗＳｉｊによって規定される線形写像である出力側線形写像の出力である原型変数ｙＲ（１），ｙＲ（２）のそれぞれを入力として、失火変数ＰＲを出力するソフトマックス関数を含む。これにより、本実施形態において、失火変数ＰＲは、実際に失火が生じたことのもっともらしさの大小を「０」よりも大きく「１」よりも小さい所定領域内で連続的な値として定量化したものとなる。
【００７７】
次に、ＣＰＵ７２は、失火変数ＰＲの値が判定値ＰＲｔｈ以上であるか否かを判定する（Ｓ２２８）。そしてＣＰＵ７２は、判定値ＰＲｔｈ以上であると判定する場合（Ｓ２２８：ＹＥＳ）、カウンタＣＲをインクリメントする（Ｓ２３０）。そして、ＣＰＵ７２は、Ｓ２２８の処理が最初に実行された時点または後述のＳ２３６の処理がなされた時点から所定期間が経過したか否かを判定する（Ｓ２３２）。ここで所定期間は、１燃焼サイクルの期間よりも長く、望ましくは、１燃焼サイクルの１０倍以上の長さを有することが望ましい。
【００７８】
ＣＰＵ７２は、所定期間が経過したと判定する場合（Ｓ２３２：ＹＥＳ）、カウンタＣＲが閾値ＣＲｔｈ以上であるか否かを判定する（Ｓ２３４）。この処理は、許容範囲を超える頻度で失火が生じたか否かを判定する処理である。ＣＰＵ７２は、閾値ＣＲｔｈ未満であると判定する場合（Ｓ２３４：ＮＯ）、カウンタＣＲを初期化する（Ｓ２３６）。これに対し、ＣＰＵ７２は、閾値ＣＲｔｈ以上であると判定する場合（Ｓ２３４：ＹＥＳ）、異常に対処することをユーザに促すべく、図１に示す警告灯９０を操作する報知処理を実行する（Ｓ２３８）。
【００７９】
なお、ＣＰＵ７２は、Ｓ２３６，Ｓ２３８の処理が完了する場合や、Ｓ２１４，Ｓ２２８，Ｓ２３２の処理において否定判定する場合には、図６に示す一連の処理を一旦終了する。
【００８０】
ちなみに、本実施形態の写像データ７６ａも、第１実施形態において例示した写像データ７６ａと同様に、テストベンチにてクランク軸２４にダイナモメータを接続した状態で内燃機関１０を稼働させて学習させたものである。
【００８１】
ここで、本実施形態の作用及び効果について説明する。
ＣＰＵ７２は、回転波形変数に基づき失火変数ＰＲの値を算出することによって、失火の有無を判定する。したがって、第１実施形態と同様の効果が得られる。
【００８２】
また、上記の第３実施形態によれば、さらに以下に記載する作用効果が得られる。
（３）入力変数ｘとなる回転波形変数を、微小回転時間Ｔ３０のうちの圧縮上死点付近の値を選択的に用いて生成した。失火の有無で相違が最も生じるのは、微小回転時間Ｔ３０のうちの圧縮上死点付近の値である。そのため、微小回転時間Ｔ３０のうちの圧縮上死点付近の値を選択的に用いることにより、入力変数ｘの次元が大きくなることを抑制しつつも、失火の有無の判定に必要な情報を極力取り込むことができる。
【００８３】
（４）回転波形変数に、気筒間変数ΔＴｂ（２）を含めた。気筒間変数ΔＴｂ（２）は、失火の検出対象となる気筒とこれに隣接する気筒との圧縮上死点付近の微小回転時間Ｔ３０同士の差を予め１次元で定量化したものである。そのため、小さい次元数の変数で失火の有無の判定に必要な情報を効率的に取り込むことができる。
【００８４】
（５）回転波形変数に、気筒間変数ΔＴｂ（２）のみならず、変動パターン変数ＦＬを含めた。クランク軸２４には、路面からの振動等が重畳することから、回転波形変数を気筒間変数ΔＴｂ（２）のみとする場合には、誤判定が生じる懸念がある。これに対し、本実施形態では、気筒間変数ΔＴｂ（２）に加えて、変動パターン変数ＦＬを用いて失火変数ＰＲの値を算出することにより、気筒間変数ΔＴｂ（２）のみから算出する場合と比較して、失火変数ＰＲの値を、失火が生じたもっともらしさの度合い、すなわち確率をより高精度に示す値とすることができる。
【００８５】
しかも、本実施形態では、機械学習によって学習されたパラメータである入力側係数ｗＦｊｋによる気筒間変数ΔＴｂ（２）と変動パターン変数ＦＬとの結合演算によって失火変数ＰＲの値を算出する。そのため、気筒間変数ΔＴｂ（２）と判定値との比較と、変動パターン変数ＦＬと判定値との比較とに基づき失火の有無を判定する場合と比較して、気筒間変数ΔＴｂ（２）及び変動パターン変数ＦＬと失火とのより詳細な関係に基づき失火の有無を判定することができる。
【００８６】
（第４実施形態）
以下、第４実施形態について、第３実施形態との相違点を中心に図面を参照しつつ説明する。本実施形態では、失火変数ＰＲの算出処理を車両の外部で行う。
【００８７】
本実施形態の状態検出システムは、ＲＯＭ７４に記憶されたサブプログラム７４ｃ及び、ＲＯＭ１２４に記憶されたメインプログラム１２４ａ、記憶装置１２６に記憶された写像データ１２６ａの内容以外は、図４に示した第２実施形態のものと同じ構成とされている。その他の同様の構成については、便宜上同一の符号を付している。
【００８８】
図８に、本実施形態にかかる失火検出処理の手順を示す。図８（ａ）に示す処理は、図４に示すＲＯＭ７４に記憶されているサブプログラム７４ｃをＣＰＵ７２が実行することにより実現される。なお、第２実施形態のものと内容は異なるものの、本実施形態におけるサブプログラム７４ｃも、失火を検出するための失火検出サブプログラムである。また、図８（ｂ）に示す処理は、ＲＯＭ１２４に記憶されているメインプログラム１２４ａをＣＰＵ１２２が実行することにより実現される。第２実施形態のものと内容は異なるものの、本実施形態におけるメインプログラム１２４ａも、失火を検出するための失火検出メインプログラムである。また、図８において図６に示した処理に対応する処理については、便宜上同一のステップ番号を付している。以下では、失火検出処理の時系列に沿って、図８に示す処理を説明する。
【００８９】
車両ＶＣにおいてＣＰＵ７２は、図８（ａ）に示すＳ２１４の処理において肯定判定する場合、微小回転時間Ｔ３０（０），Ｔ３０（６），Ｔ３０（１２），Ｔ３０（１８），Ｔ３０（２４），Ｔ３０（３０），Ｔ３０（３６），Ｔ３０（４２），Ｔ３０（４８）を取得する（Ｓ２５０）。これら微小回転時間Ｔ３０は、互いに異なる角度間隔のそれぞれにおける微小回転時間Ｔ３０同士の相違に関する情報を含む変数である回転波形変数を構成する。特に、上記微小回転時間Ｔ３０は、圧縮上死点前３０°ＣＡから圧縮上死点までの角度間隔の回転に要する時間であり、しかも、圧縮上死点の出現タイミングの９回分の値である。そのため、それら微小回転時間Ｔ３０の組データは、互いに異なる圧縮上死点のそれぞれに対応した微小回転時間Ｔ３０同士の相違に関する情報を示す変数となっている。なお、上記の９個の微小回転時間Ｔ３０は、気筒間変数ΔＴｂ（２）、及び変動パターン変数ＦＬ［０２］，ＦＬ［１２］，ＦＬ［３２］を算出するときに用いた微小回転時間Ｔ３０の全てである。
【００９０】
次に、ＣＰＵ７２は、Ｓ２２２の処理を実行した後、通信機７９を操作することによって、Ｓ２５０，Ｓ２２２の処理において取得したデータを、車両ＶＣの識別情報（車両ＩＤ）とともにセンター１２０に送信する（Ｓ２５２）。
【００９１】
これに対し、センター１２０のＣＰＵ１２２は、図８（ｂ）に示すように、送信されたデータを受信する（Ｓ２６０）。そして、ＣＰＵ１２２は、Ｓ２６０の処理によって取得した変数の値を入力変数ｘ（１）〜ｘ（１２）に代入する（Ｓ２６２）。すなわち、ＣＰＵ１２２は、入力変数ｘ（１）に微小回転時間Ｔ３０（０）を代入し、入力変数ｘ（２）に微小回転時間Ｔ３０（６）を代入し、入力変数ｘ（３）に微小回転時間Ｔ３０（１２）を代入し、入力変数ｘ（４）に微小回転時間Ｔ３０（１８）を代入する。またＣＰＵ１２２は、入力変数ｘ（５）に微小回転時間Ｔ３０（２４）を代入し、入力変数ｘ（６）に微小回転時間Ｔ３０（３０）を代入し、入力変数ｘ（７）に微小回転時間Ｔ３０（３６）を代入する。またＣＰＵ１２２は、入力変数ｘ（８）に微小回転時間Ｔ３０（４２）を代入し、入力変数ｘ（９）に微小回転時間Ｔ３０（４８）を代入する。またＣＰＵ１２２は、入力変数ｘ（１０）に回転速度ＮＥを代入し、入力変数ｘ（１１）に充填効率ηを代入し、入力変数ｘ（１２）に路面状態変数ＳＲを代入する。
【００９２】
次にＣＰＵ１２２は、図４に示す記憶装置１２６に記憶された写像データ１２６ａによって規定される検出用写像に入力変数ｘ（１）〜ｘ（１２）を入力することによって、検出用写像の出力値である失火変数ＰＲの値を算出する（Ｓ２６４）。
【００９３】
本実施形態において、この検出用写像は、中間層が「α」個であって且つ、各中間層の活性化関数ｈ１〜ｈαが、ＲｅＬＵであり、出力層の活性化関数がソフトマックス関数であるニューラルネットワークによって構成されている。例えば、第１の中間層の各ノードの値は、係数ｗ（１）ｊｉ（ｊ＝０〜ｎ１，ｉ＝０〜１２）によって規定される線形写像に上記入力変数ｘ（１）〜ｘ（１２）を入力した際の出力を活性化関数ｈ１に入力することによって生成される。すなわち、ｍ＝１，２，…，αとすると、第ｍの中間層の各ノードの値は、係数ｗ（ｍ）によって規定される線形写像の出力を活性化関数ｈｍに入力することによって生成される。図８において、ｎ１，ｎ２，…，ｎαは、それぞれ、第１、第２、…、第αの中間層のノード数である。ちなみに、ｗ（１）ｊ０等は、バイアスパラメータであり、入力変数ｘ（０）は、「１」と定義されている。
【００９４】
次に、ＣＰＵ１２２は、通信機１２９を操作することによって、Ｓ２６０の処理によって受信したデータが送信された車両ＶＣに、失火変数ＰＲの値を示す信号を送信し（Ｓ２６６）、図８（ｂ）に示す一連の処理を一旦終了する。これに対し、図８（ａ）に示すように、ＣＰＵ７２は、失火変数ＰＲの値を受信し（Ｓ２５４）、Ｓ２２８〜Ｓ２３８の処理を実行する。
【００９５】
このように、本実施形態では、センター１２０においてＳ２６４の処理を実行するため、ＣＰＵ７２の演算負荷を軽減できる。
（第５実施形態）
次に、第５実施形態について、上記の各実施形態との相違点を中心に図面を参照しつつ説明する。
【００９６】
上記の各実施形態の状態検出システムは、内燃機関１０で失火が生じた状態を、クランク軸２４の回転変動に基づき検出するシステムとして構成されていた。空燃比に気筒間のばらつきが生じた、気筒間空燃比インバランスが発生した場合にも、気筒間の燃焼状態のばらつきが生じてクランク軸２４の回転変動が大きくなる。本実施形態の状態検出システムは、こうした気筒間空燃比インバランスを検出するシステムとして構成されている。なお、本実施形態の状態検出システムの構成は、図１に示した構成と基本的に同じである。ただし、本実施形態の状態検出システムのＲＯＭ７４には、プログラム７４ａとして、失火検出プログラムの代わりに、気筒間空燃比インバランスの検出用プログラムが格納されている。
【００９７】
図９に、本実施形態のインバランス検出処理の手順を示す。図９に示す処理は、ＲＯＭ７４に記憶されたプログラム７４ａであるインバランス検出プログラムをＣＰＵ７２が既定の制御周期毎に繰り返し実行することにより実現される。
【００９８】
図９に示す一連の処理において、ＣＰＵ７２は、まず、インバランスの検出処理の実行条件が成立するか否かを判定する（Ｓ３１０）。実行条件には、内燃機関１０の吸気に対する燃料蒸気のパージや排気の再循環が実施されていないことが含まれる。
【００９９】
次に、Ｓ３１２ａの処理において、ＣＰＵ７２は、微小回転時間Ｔ３０（１），Ｔ３０（２），…，Ｔ３０（２４）、上流側平均値Ａｆｕａｖｅ（１），Ａｆｕａｖｅ（２），…，Ａｆｕａｖｅ（２４）、回転速度ＮＥ、充填効率η、０．５次振幅Ａｍｐｆ／２、を取得する。微小回転時間Ｔ３０は、ＣＰＵ７２により、クランク角センサ８０の出力信号Ｓｃｒに基づき、クランク軸２４が３０°ＣＡ回転するのに要する時間を計時することによって算出される。ここで、微小回転時間Ｔ３０（１），Ｔ３０（２）等、カッコの中の数字が異なる場合、１燃焼サイクルである７２０°ＣＡ内の異なる回転角度間隔であることを示す。すなわち、微小回転時間Ｔ３０（１）〜Ｔ３０（２４）は、７２０°ＣＡの回転角度領域を３０°ＣＡで等分割した各角度間隔における回転時間を示す。
【０１００】
詳しくは、ＣＰＵ７２は、出力信号Ｓｃｒに基づきクランク軸２４が３０°ＣＡだけ回転した時間を計時し、これをフィルタ処理前時間ＮＦ３０とする。次にＣＰＵ７２は、フィルタ処理前時間ＮＦ３０を入力とするデジタルフィルタ処理を施すことによって、フィルタ処理後時間ＡＦ３０を算出する。そしてＣＰＵ７２は、所定期間（例えば７２０°ＣＡ）におけるフィルタ処理後時間ＡＦ３０の極大値と極小値との差が「１」となるようフィルタ処理後時間ＡＦ３０を正規化することによって、微小回転時間Ｔ３０を算出する。
【０１０１】
また、ｍ＝１〜２４とすると、上流側平均値Ａｆｕａｖｅ（ｍ）は、上記各微小回転時間Ｔ３０（ｍ）と同一の３０°ＣＡの角度間隔における上流側検出値Ａｆｕの平均値である。また、０．５次振幅Ａｍｐｆ／２はクランク軸２４の回転周波数の０．５次成分の強度であり、ＣＰＵ７２により、微小回転時間Ｔ３０の上記時系列データのフーリエ変換によって算出される。
【０１０２】
また、ＣＰＵ７２は、Ｓ３１２ａの処理において、点火時期平均値ａｉｇａｖｅ、ＥＧＲ率平均値Ｒｅｇｒａｖｅ、水温ＴＨＷ、シフト位置Ｓｆｔ、路面状態変数ＳＲも取得する。ここで、点火時期平均値ａｉｇａｖｅや、ＥＧＲ率平均値Ｒｅｇｒａｖｅは、図９の処理の周期における点火時期ａｉｇやＥＧＲ率Ｒｅｇｒの平均値である。なお、路面状態変数ＳＲの取得の方法は、第１実施形態と同様である。
【０１０３】
次にＣＰＵ７２は、インバランス率Ｒｉｖを出力する検出用写像の入力変数ｘ（１）〜ｘ（５６）に、Ｓ３１２ａの処理によって取得した値を代入する（Ｓ３１４ａ）。詳しくは、ＣＰＵ７２は、「ｍ＝１〜２４」として、入力変数ｘ（ｍ）に微小回転時間Ｔ３０（ｍ）の値を、入力変数ｘ（２４＋ｍ）に上流側平均値Ａｆｕａｖｅ（ｍ）の値を、入力変数ｘ（４９）に回転速度ＮＥの値を、入力変数ｘ（５０）に充填効率ηの値を、入力変数ｘ（５１）に０．５次振幅Ａｍｐｆ／２の値を、それぞれ代入する。また、ＣＰＵ７２は、入力変数ｘ（５２）に点火時期平均値ａｉｇａｖｅの値を、入力変数ｘ（５３）にＥＧＲ率平均値Ｒｅｇｒａｖｅの値を、入力変数ｘ（５４）に水温ＴＨＷの値を、入力変数ｘ（５５）にシフト位置Ｓｆｔの値を、入力変数ｘ（５６）に路面状態変数ＳＲの値を、それぞれ代入する。
【０１０４】
本実施形態において、インバランス率Ｒｉｖは、狙いとする噴射量の燃料が噴射されている気筒において「０」とし、狙いとする噴射量よりも実際の噴射量が多い場合に正の値となり、少ない場合に負の値となる。
【０１０５】
次にＣＰＵ７２は、図１に示す記憶装置７６に記憶された写像データ７６ａによって規定される検出用写像に入力変数ｘ（１）〜ｘ（５６）の値を入力することによって、気筒＃ｉ（ｉ＝１〜４）のそれぞれのインバランス率Ｒｉｖ（１）〜Ｒｉｖ（４）の値を算出する（Ｓ３１６ａ）。
【０１０６】
本実施形態において、この検出用写像は、中間層が１層のニューラルネットワークによって構成されている。上記ニューラルネットワークは、入力側係数ｗＦｊｋ（ｊ＝０〜ｎ，ｋ＝０〜５６）と、入力側係数ｗＦｊｋによって規定される線形写像である入力側線形写像の出力のそれぞれを非線形変換する入力側非線形写像としての活性化関数ｈ（ｘ）を含む。本実施形態では、活性化関数ｈ（ｘ）として、ハイパボリックタンジェント「ｔａｎｈ（ｘ）」を例示する。また、上記ニューラルネットワークは、出力側係数ｗＳｉｊ（ｉ＝１〜４，ｊ＝０〜ｎ）と、出力側係数ｗＳｉｊによって規定される線形写像である出力側線形写像の出力のそれぞれを非線形変換する出力側非線形写像としての活性化関数ｆ（ｘ）を含む。本実施形態では、活性化関数ｆ（ｘ）として、ハイパボリックタンジェント「ｔａｎｈ（ｘ）」を例示する。なお、値ｎは、中間層の次元を示すものである。
【０１０７】
なお、ＣＰＵ７２は、Ｓ３１６ａの処理が完了する場合や、Ｓ３１０の処理において否定判定する場合には、図９に示す一連の処理を一旦終了する。
図１０に、上記インバランス率Ｒｉｖ（ｉ）を利用する処理の手順を示す。図１０に示す処理は、図１に示すＲＯＭ７４に記憶されたプログラムをＣＰＵ７２が、例えばインバランス率Ｒｉｖ（ｉ）が算出される都度、繰り返し実行することにより実現される。
【０１０８】
図１０に示す一連の処理において、ＣＰＵ７２は、まず、図９の処理によって新たに算出されたインバランス率Ｒｉｖ（ｉ）の値を入力とする指数移動平均処理によって、インバランス学習値Ｌｉｖ（ｉ）を更新する（Ｓ３２０）。具体的には、ＣＰＵ７２は、記憶装置７６に記憶されているインバランス学習値Ｌｉｖ（ｉ）に係数αを乗算した値と、インバランス率Ｒｉｖ（ｉ）に「１−α」を乗算した値との和によって、インバランス学習値Ｌｉｖを更新する（Ｓ３２０）。なお、「０＜α＜１」である。
【０１０９】
次にＣＰＵ７２は、インバランス学習値Ｌｉｖ（ｉ）が、リーン側許容限界値ＬＬ以上であって、且つリッチ側許容限界値ＬＨ以下であるか否かを判定する（Ｓ３２２）。ＣＰＵ７２は、インバランス学習値Ｌｉｖ（ｉ）が、リーン側許容限界値ＬＬ未満であると判定する場合やリッチ側許容限界値よりも大きいと判定する場合には（Ｓ３２２：ＮＯ）、ユーザに修理を促すべく、警告灯９０を操作して報知処理を実行する（Ｓ３２４）。
【０１１０】
一方、ＣＰＵ７２は、リーン側許容限界値ＬＬ以上であって、且つリッチ側許容限界値ＬＨ以下であると判定する場合（Ｓ３２２：ＹＥＳ）や、Ｓ３２４の処理が完了する場合には、各気筒の要求噴射量Ｑｄ（＃ｉ）を補正する（Ｓ３２６）。すなわち、ＣＰＵ７２は、各気筒の要求噴射量Ｑｄ（＃ｉ）に、インバランス学習値Ｌｉｖ（ｉ）に応じた補正量ΔＱｄ（Ｌｉｖ（ｉ））を加算することによって要求噴射量Ｑｄ（＃ｉ）を補正する。ここで、補正量ΔＱｄ（Ｌｉｖ（ｉ））は、インバランス学習値Ｌｉｖ（ｉ）がゼロよりも大きい場合には、負の値となり、ゼロよりも小さい場合には、正の値となる。なお、インバランス学習値Ｌｉｖ（ｉ）がゼロの場合、補正量ΔＱｄ（Ｌｉｖ（ｉ））もゼロとされる。
【０１１１】
なお、ＣＰＵ７２は、Ｓ３２６の処理を完了する場合、図１０に示す一連の処理を一旦終了する。ちなみに、本実施形態では、Ｓ３１０の処理において肯定判定されてＳ３１２ａの処理を実行する場合には、Ｓ３２６の処理を一旦停止することとする。
【０１１２】
ちなみに、本実施形態における上記写像データ７６ａは、例えば次のようにして生成されたものである。
まず、予め単体での計測によって、インバランス率がゼロとは異なる様々な値を取る複数の燃料噴射弁２０と、インバランス率がゼロである３個の燃料噴射弁２０とを用意する。そして、トルクコンバータ６０を連結し、かつインバランス率がゼロの燃料噴射弁２０を３個、インバランス率がゼロとは異なる燃料噴射弁２０を１個搭載した内燃機関１０を、テストベンチにてトルクコンバータ６０の出力軸にダイナモメータを接続した状態で稼働させる。なお、搭載された燃料噴射弁２０のそれぞれのインバランス率Ｒｉｖｔが、教師データとなっている。
【０１１３】
そして、都度の回転波形変数やＳ３１２ａの処理によって取得する変数の値を用いて、Ｓ３１４ａ，Ｓ３１６ａの処理と同様の処理によって、インバランス率Ｒｉｖｔの値を算出する。こうして算出されたインバランス率Ｒｉｖｔの値と教師データとの差を縮めるように、上記入力側係数ｗＦｊｋや出力側係数ｗＳｉｊの値を学習する。具体的には、例えば公差エントロピーを最小化するように、入力側係数ｗＦｊｋや出力側係数ｗＳｉｊの値を学習すればよい。
【０１１４】
本実施形態では、路面状態変数ＳＲを、検出用写像への入力に含めている。そのため、車両が走行している路面の状態が与える影響を踏まえたかたちでインバランス率を算出できる。したがって、車両ＶＣに搭載された内燃機関１０における気筒間空燃比インバランスの検出精度を向上できる。
【０１１５】
以上説明した本実施形態によれば、さらに以下に記載する作用効果が得られる。
（１）内燃機関１０の動作点を規定する動作点変数としての回転速度ＮＥ及び充填効率ηを検出用写像の入力とした。点火装置２２やＥＧＲバルブ３４、吸気側バルブタイミング可変装置４０等の内燃機関１０の操作部の操作量は、内燃機関１０の動作点に基づき定められる傾向がある。そのため、動作点変数は、各操作部の操作量に関する情報を含む変数である。したがって、動作点変数を検出用写像の入力とすることにより、各操作部の操作量に関する情報に基づきインバランス率Ｒｉｖ（ｉ）を算出することができ、ひいてはインバランス率Ｒｉｖ（ｉ）をより高精度に算出することができる。
【０１１６】
（２）検出用写像の入力に上流側平均値Ａｆｕａｖｅを含めた。これにより、時系列データの時間間隔毎の上流側検出値Ａｆｕを用いる場合と比較すると、時系列データのデータ数を増加させることなく、触媒３０に流入する酸素や未燃燃料についてのより正確な情報を得ることができ、ひいてはインバランス率Ｒｉｖ（ｉ）をより高精度に算出することができる。
【０１１７】
（第６実施形態）
次に第６実施形態について、第５実施形態との相違点を中心に図面を参照しつつ説明する。本実施形態では、インバランス率Ｒｉｖ（ｉ）の算出処理を車両の外部で行う。
【０１１８】
本実施形態の状態検出システムは、ＲＯＭ７４に記憶されたサブプログラム７４ｃ及び、ＲＯＭ１２４に記憶されたメインプログラム１２４ａ、記憶装置１２６に記憶された写像データ１２６ａの内容以外は、図４に示した第２実施形態のものと同じ構成とされている。その他の同様の構成については、便宜上同一の符号を付している。
【０１１９】
図１１に、本実施形態にかかるインバランス検出処理の手順を示す。図１１（ａ）に示す処理は、図４に示すＲＯＭ７４に記憶されたサブプログラム７４ｃをＣＰＵ７２が実行することにより実現される。なお、本実施形態におけるサブプログラム７４ｃは、インバランスを検出するためのインバランス検出サブプログラムである。また、図１１（ｂ）に示す処理は、ＲＯＭ１２４に記憶されているメインプログラム１２４ａをＣＰＵ１２２が実行することにより実現される。なお、本実施形態におけるメインプログラム１２４ａは、インバランスを検出するためのインバランス検出メインプログラムである。図１１において図９に示した処理に対応する処理については、便宜上同一のステップ番号を付している。以下では、インバランス検出処理の時系列に沿って、図１１に示す処理を説明する。
【０１２０】
図１１（ａ）に示すように、車両ＶＣにおいてＣＰＵ７２は、Ｓ３１２ａの処理を完了すると、通信機７９を操作することによって、Ｓ３１２ａの処理において取得したデータを、車両ＶＣの識別情報である車両ＩＤとともにセンター１２０に送信する（Ｓ３３２）。
【０１２１】
これに対し、センター１２０のＣＰＵ１２２は、図１１（ｂ）に示すように、送信されたデータを受信し（Ｓ３４０）、Ｓ３１４ａ，Ｓ３１６ａの処理を実行する。そしてＣＰＵ１２２は、通信機１２９を操作することによって、Ｓ３４０の処理によって受信したデータが送信された車両ＶＣにインバランス率Ｒｉｖ（ｉ）に関する信号を送信し（Ｓ３４２）、図１１（ｂ）に示す一連の処理を一旦終了する。これに対し、図１１（ａ）に示すように、ＣＰＵ７２は、インバランス率Ｒｉｖ（ｉ）に関する信号を受信し（Ｓ３３４）、図１１（ａ）に示す一連の処理を一旦終了する。
【０１２２】
このように、本実施形態では、センター１２０においてインバランス率Ｒｉｖ（ｉ）を算出することとしたため、ＣＰＵ７２の演算負荷を軽減できる。
（対応関係）
上記実施形態における事項と、上記「課題を解決するための手段」の欄に記載した事項との対応関係は、次の通りである。記憶装置は、記憶装置７６に対応する。第１実施形態、第２実施形態、第５実施形態、及び第６実施形態では微小回転時間Ｔ３０（１）〜Ｔ３０（２４）が回転波形変数に対応する。また、第３実施形態及び第４実施形態では、気筒間変数ΔＴｂ（２）及び変動パターン変数ＦＬ［０２］、ＦＬ［１２］、ＦＬ［３２］が、回転波形変数に対応する。第１実行装置は、ＣＰＵ７２とＲＯＭ７４に対応する。第２実行装置は、ＣＰＵ１２２とＲＯＭ１２４に対応する。取得処理はＳ１０，Ｓ１２ａ，Ｓ１２，Ｓ２１８，Ｓ２２２，Ｓ２５０，Ｓ３１２ａの処理に対応する。出力値算出処理はＳ１６ａ，Ｓ１６，Ｓ２２６，Ｓ２６４，Ｓ３１６ａの処理に対応する。外部側送信処理はＳ１６６，Ｓ２６６，Ｓ３４２の処理に対応する。車両側受信処理はＳ１５２，Ｓ２５４，Ｓ３３４の処理に対応する。判定処理はＳ１８，Ｓ２０，Ｓ２２，Ｓ２４，Ｓ１６２，Ｓ２２８，Ｓ２３０，Ｓ２３２，Ｓ２３４，Ｓ３２２の処理に対応する。データ解析装置は、センター１２０に対応する。
【０１２３】
さらに、第１実施形態及び第２実施形態では失火が生じた確率Ｐ（ｉ）が燃焼状態変数に対応し、第３実施形態及び第４実施形態では失火変数ＰＲが燃焼状態変数に対応する。第５実施形態及び第６実施形態ではインバランス率Ｒｉｖ（ｉ）が燃焼状態変数に対応する。
【０１２４】
また、第１実施形態、第２実施形態、第３実施形態、及び第４実施形態では失火が生じた状態が既定の運転状態に対応し、第５実施形態及び第６実施形態では気筒間の空燃比のばらつきが生じた状態が既定の運転状態に対応する。
【０１２５】
（その他の実施形態）
なお、上記各実施形態は、以下のように変更して実施することができる。上記各実施形態及び以下の変更例は、技術的に矛盾しない範囲で互いに組み合わせて実施することができる。
【０１２６】
・「微小回転時間Ｔ３０のサンプリング間隔について」
写像への入力となる微小回転時間Ｔ３０のサンプリング間隔は、３０°ＣＡに限らない。例えば１０°ＣＡ等、３０°ＣＡよりも小さい角度間隔であってもよい。もっとも３０°ＣＡ以下の角度間隔に限らず、例えば４５°ＣＡ等であってもよい。
【０１２７】
・「上流側平均値Ａｆｕａｖｅのサンプリング間隔について」
写像への入力となる上流側平均値Ａｆｕａｖｅのサンプリング間隔は、３０°ＣＡに限らない。例えば１０°ＣＡ等、３０°ＣＡよりも小さい角度間隔であってもよい。もっとも３０°ＣＡ以下の角度間隔に限らず、例えば４５°ＣＡ等であってもよい。
【０１２８】
・「時系列データについて」
写像の入力となる上流側平均値Ａｆｕａｖｅの時系列データ及び微小回転時間Ｔ３０の時系列データとしては、７２０°の回転角度間隔における時系列データに限らない。例えば、７２０°ＣＡよりも広い回転角度間隔における時系列データであってもよい。７２０°ＣＡよりも狭い角度間隔の時系列データであってもよい。
【０１２９】
・「検出用写像への入力としての回転波形変数について」
上記第１実施形態及び第２実施形態では、１燃焼サイクルである７２０°ＣＡの回転角度間隔が分割された複数の間隔のそれぞれにおける微小回転時間Ｔ３０を検出用写像への入力としたが、これに限らない。例えば、０〜７２０°ＣＡを第１間隔とし、第１間隔のうちの、０〜２０，４０〜６０，８０〜１００，１２０〜１４０，１６０〜１８０，…，７００〜７２０のそれぞれを第２間隔として、それらの回転に要する時間を検出用写像への入力としてもよい。
【０１３０】
回転波形変数を構成する変数としては、第２間隔の回転に要する時間である微小回転時間に限らない。例えば、第２間隔を微小回転時間で割った値であってもよい。なお、回転波形変数を構成する変数としては、極大値と極小値との差を固定値とする正規化処理がなされたものであることは必須ではない。また、写像の入力とするための前処理としてのフィルタ処理としては、上述したものに限らず、例えば変速装置６４の入力軸６６の微小回転時間に基づき、入力軸６６によってクランク軸２４が回されている影響分を除く処理がなされたものとしてもよい。もっとも、フィルタ処理が施されていることは必須ではない。
【０１３１】
第３実施形態におけるＳ２２６の処理では、気筒間変数ΔＴｂ（２）及び変動パターン変数ＦＬ［０２］，ＦＬ［１２］，ＦＬ［３２］によって回転波形変数を構成したが、これに限らない。例えば、回転波形変数を構成する変動パターン変数を、変動パターン変数ＦＬ［０２］，ＦＬ［１２］，ＦＬ［３２］のいずれか１つまたは２つとしてもよい。また例えば、変動パターン変数ＦＬ［０２］，ＦＬ［１２］，ＦＬ［３２］，ＦＬ［４２］等、４つ以上の変動パターン変数を含めてもよい。
【０１３２】
第４実施形態におけるＳ２６４の処理では、互いに圧縮上死点の出現タイミングが異なる９個のタイミングのそれぞれに対応した微小回転時間Ｔ３０によって回転波形変数を構成したが、これに限らない。例えば失火の検出対象となる気筒の圧縮上死点を中央として、圧縮上死点の出現する角度間隔の２倍以上の区間を３０°ＣＡの間隔で分割したそれぞれにおける微小回転時間Ｔ３０によって回転波形変数を構成してもよい。また上記において、失火の検出対象となる気筒の圧縮上死点を中央とすることは必須ではない。さらに、ここでの微小回転時間としては、３０°ＣＡの間隔の回転に要する時間に限らない。また、微小回転時間に代えて、所定の角度間隔の回転に要する時間によって所定の角度間隔を除算した瞬時回転速度を用いてもよい。
【０１３３】
・「気筒間変数について」
気筒間変数ΔＴｂとしては、互いに圧縮上死点の出現タイミングが隣接する一対の気筒のそれぞれの圧縮上死点に対応する微小回転時間Ｔ３０同士の差の７２０°ＣＡだけ離間した値同士の差に限らない。例えば、互いに圧縮上死点の出現タイミングが３６０°ＣＡだけ離間した気筒のそれぞれの圧縮上死点に対応する微小回転時間Ｔ３０同士の差の７２０°ＣＡだけ離間した値同士の差であってもよい。この場合、気筒間変数ΔＴｂ（２）は、「Ｔ３０（１２）−Ｔ３０（２４）−｛Ｔ３０（３６）−Ｔ３０（４８）｝」となる。
【０１３４】
また、一対の気筒のそれぞれの圧縮上死点に対応する微小回転時間Ｔ３０同士の差の７２０°ＣＡだけ離間した値同士の差に限らず、失火の検出対象となる気筒と、それ以外の気筒とのそれぞれの圧縮上死点に対応する微小回転時間Ｔ３０同士の差であってもよい。
【０１３５】
また例えば、気筒間変数を、一対の気筒のそれぞれの圧縮上死点に対応する微小回転時間Ｔ３０同士の比としてもよい。
なお、気筒間変数ΔＴｂを定義する際の微小回転時間としては、３０°ＣＡの回転に要する時間に限らず、例えば４５°ＣＡの回転に要する時間等であってもよい。この際、微小回転時間は、圧縮上死点の出現間隔以下の角度間隔の回転に要する時間であることが望ましい。
【０１３６】
さらに、上記において、微小回転時間に代えて、所定の角度間隔の回転に要する時間によって所定の角度間隔を除算した瞬時回転速度を用いてもよい。
・「変動パターン変数について」
変動パターン変数の定義としては、上記実施形態において例示したものに限らない。例えば気筒間変数ΔＴｂを、「気筒間変数について」の欄において例示したもの等に変更することによって、変動パターン変数の定義を変更してもよい。
【０１３７】
さらに、互いに異なる圧縮上死点の出現タイミングに対応した気筒間変数ΔＴｂ同士の比として変動パターン変数を定義することも必須では無く、比の代わりに差をとってもよい。この場合であっても、内燃機関１０の動作点変数を入力に含めることにより、変動パターン変数の大きさが、動作点に応じて変化することを反映して失火変数ＰＲの値を算出できる。
【０１３８】
・「検出用写像への入力としての駆動系装置の状態変数について」
図２、図９、図１１の処理では、クランク軸２４に連結される駆動系装置の状態変数として、シフト位置Ｓｆｔを用いたが、これに限らない。例えばロックアップクラッチ６２の状態であってもよい。この状態は、例えば締結状態であるか解放状態であるかの２値的な状態であってもよいが、締結状態、解放状態、及びスリップ状態のそれぞれを識別するものであってもよい。
【０１３９】
また例えば、変速装置６４の油温であってもよい。また例えば駆動輪６９の回転速度であってもよい。なお、写像の入力となる駆動系装置の状態変数は、１つに限らない。
・「検出用写像への入力としての空燃比検出変数について」
上記実施形態では、１燃焼サイクルである７２０°ＣＡの回転角度間隔が分割された複数の間隔のそれぞれにおける上流側平均値Ａｆｕａｖｅを検出用写像への入力としたが、これに限らない。例えば、第２間隔における上流側平均値Ａｆｕａｖｅを検出用写像への入力としてもよい。
【０１４０】
上記実施形態では、上流側平均値Ａｆｕａｖｅを、１度の第２間隔における複数のサンプリング値の平均値としたが、これに限らない。例えば、複数の燃焼サイクルにわたって、第２間隔のそれぞれにおける上流側検出値Ａｆｕをサンプリングし、それらを第２間隔毎に平均することによって、上流側平均値Ａｆｕａｖｅを算出してもよい。
【０１４１】
空燃比検出変数としては、上流側平均値Ａｆｕａｖｅに限らず、上流側検出値Ａｆｕであってもよい。
・「検出用写像の入力としての混合気の燃焼速度を調整する調整変数について」
Ｓ３１６ａの処理では、検出用写像の入力となって且つ燃焼速度を調整する調整変数として、点火時期平均値ａｉｇａｖｅ、及びＥＧＲ率平均値Ｒｅｇｒａｖｅを用いたが、それら２つのパラメータに関しては、例えば１つのみを用いてもよい。
【０１４２】
点火時期を示す変数としての点火変数としては、点火時期平均値ａｉｇａｖｅに限らず、点火時期ａｉｇであってもよい。ＥＧＲ率を示す変数としては、ＥＧＲ率平均値Ｒｅｇｒａｖｅに限らず、ＥＧＲ率Ｒｅｇｒであってもよい。
【０１４３】
また例えば、下記「内燃機関について」の欄に記載したように圧縮着火式内燃機関に適用する場合には、点火変数に代えて、噴射時期やその平均値を用いればよい。
検出用写像の入力となって且つ燃焼速度を調整する調整変数としては、上記変数に限らず、例えば吸気バルブ１６の開弁タイミングやリフト量、排気バルブ２６の開弁タイミングやリフト量等であってもよい。また例えば、いくつかの気筒において混合気の燃焼制御を停止する気筒休止制御中においては、燃焼制御を停止している気筒の情報であってもよい。また例えば、過給機とウェストゲートバルブとを備える内燃機関１０の場合、ウェストゲートバルブの開口度であってもよい。
【０１４４】
・「検出用写像の入力としての路面状態変数について」
路面状態変数ＳＲとしては、起伏の大小に応じた２値的な変数に限らず、例えば起伏の大小に応じた３値以上の変数であってもよい。また、加速度Ｄａｃｃに基づき路面状態変数ＳＲを生成する手法としては、図３に例示した手法に限らず、例えば、加速度Ｄａｃｃの絶対値の所定時間当たりの平均値を用いてもよい。これによれば、路面状態変数ＳＲは連続的な量となる。
【０１４５】
路面状態変数ＳＲとしては、車両ＶＣの上下方向の加速度の検出値に基づき定量化されたものに限らない。例えば車両の横方向の加速度や前後方向の加速度によって定量化してもよい。さらに、写像の入力として、車両の上下方向の加速度と、横方向の加速度と前後方向の加速度との３つの加速度のうちのいずれか２つ、または全てを用いて定量化されたものであってもよい。
【０１４６】
路面状態変数ＳＲは、加速度センサ８８によって検出される加速度Ｄａｃｃによって定量化されたが、これに限らない。例えば、カメラによる路面の撮像データやレーダの反射波に関するデータの解析結果データを用いてもよい。
【０１４７】
例えば、カメラによる路面の撮像データを解析する場合には、畳み込みニューラルネットワークを用いるとよい。畳み込みニューラルネットワークは、例えば、畳み込み層とプーリング層を交互に何層か重ねた特徴抽出パートと、ソフトマックス法を用いて分類を行う全結合層からなる識別パートとからなる。こうした畳み込みニューラルネットワークを用いることにより、撮像データを入力とし、起伏の大小に応じて分類した出力を得ることができる。
【０１４８】
その他、例えば路面の状態の情報を有する地図データとＧＰＳを用いて現在地における路面の状態を取得し、これを用いてもよい。また各車輪の空気圧を用いてもよい。すなわち、各車輪の空気圧の差には、路面の傾斜や凹凸による車輪の撓みに関する情報が含まれている。そのため、各車輪の空気圧の差には路面の状態を示唆する情報が含まれている。また例えば燃料ゲージやオイルゲージ等、車両内の流体の液面の位置を検知するセンサの検出値を用いてもよい。すなわち、液面の変動には路面の凹凸等の情報が含まれている。またサスペンションの油圧を検知するセンサの検出値を用いてもよい。すなわち、サスペンションは路面の凹凸による影響を受けて動作するため、この油圧には、路面の凹凸等の情報が含まれている。
【０１４９】
なお、路面状態変数としては、路面の凹凸等を定量化したものに限らない。例えば、凍結の有無等、摩擦の大小を定量化したものであってもよく、また起伏と摩擦の大小との双方を識別する変数であってもよい。なお、摩擦の大小を定量化するための入力としては、各車輪の車輪速の差等を用いることができる。また路面の凍結の有無を判定するための入力としては、外気温の情報や、カメラによる撮像データを用いることができる。
【０１５０】
・「検出用写像への入力としての動作点変数について」
動作点変数としては、回転速度ＮＥ及び充填効率ηに限らない。例えば吸入空気量Ｇａと回転速度ＮＥとであってもよい。また、例えば下記「内燃機関について」の欄に記載したように、圧縮着火式内燃機関を用いる場合、噴射量と回転速度ＮＥとであってもよい。なお、動作点変数を検出用写像の入力とすることは必須では無い。例えば下記「車両について」の欄に記載したシリーズハイブリッド車に搭載される内燃機関に適用される場合において、内燃機関が特定の動作点に限って運転される場合等には、動作点変数を入力変数に含めなくても、燃焼状態変数の値を高精度に算出できる。
【０１５１】
・「検出用写像への入力について」
瞬時速度パラメータに加えて入力する検出用写像への入力としては、上記実施形態や上記変更例において例示したものに限らない。例えば、内燃機関１０の置かれた環境に関するパラメータを用いてもよい。具体的には、例えば吸入空気中の酸素の割合に影響を与えるパラメータである大気圧を用いてもよい。また例えば、燃焼室１８内における混合気の燃焼速度に影響を与えるパラメータである吸気温を用いてもよい。また例えば、燃焼室１８内における混合気の燃焼速度に影響を与えるパラメータである湿度を用いてもよい。なお、湿度の把握には、湿度センサを用いてもよいが、ワイパーの状態や、雨滴を検知するセンサの検出値を利用してもよい。また、クランク軸２４に機械的に連結される補機の状態に関するデータであってもよい。
【０１５２】
検出用写像への入力に内燃機関１０の動作点を含めることは必須ではない。例えば下記「内燃機関について」の欄に記載したように内燃機関がシリーズハイブリッド車に搭載され、その動作点が狭い範囲に制限された制御が前提とされる場合等にあっては、動作点を含めなくてもよい。
【０１５３】
また、ニューラルネットワークへの入力や、下記「機械学習のアルゴリズムについて」の欄に記載した回帰式への入力等としては、各次元が単一の物理量や変動パターン変数ＦＬからなるものに限らない。例えば上記実施形態等において検出用写像への入力とした複数種類の物理量や変動パターン変数ＦＬの一部については、ニューラルネットワークや回帰式への直接の入力とする代わりに、それらの主成分分析によるいくつかの主成分を、ニューラルネットワークや回帰式への直接の入力としてもよい。もっとも、主成分をニューラルネットワークや回帰式の入力とする場合に、ニューラルネットワークや回帰式への入力の一部のみが主成分となることは必須ではなく、全部を主成分としてもよい。なお、主成分を検出用写像への入力とする場合、写像データ７６ａ，１２６ａには、主成分を定める検出用写像を規定するデータが含まれることとなる。
【０１５４】
・「対処処理について」
上記実施形態では、警告灯９０を操作することによって、視覚情報を通じて失火が生じた旨を報知したが、これに限らない。例えば、スピーカを操作することによって、聴覚情報を通じて失火が生じた旨を報知してもよい。また、例えば図１に示す制御装置７０が通信機７９を備えることとし、通信機７９を操作してユーザの携帯端末に失火が生じた旨の信号を送信する処理としてもよい。これは、ユーザの携帯端末に、報知処理を実行するアプリケーションプログラムをインストールしておくことにより実現できる。
【０１５５】
対処処理としては、報知処理に限らない。例えば、内燃機関１０の燃焼室１８内の混合気の燃焼を制御するための操作部を失火が生じた旨の情報に応じて操作する操作処理であってもよい。具体的には、例えば操作部を点火装置２２として失火が生じた気筒の点火時期を進角させてもよい。また例えば、操作部を燃料噴射弁２０として、失火が生じた気筒の燃料噴射量を増量させてもよい。
【０１５６】
・「実行装置について」
実行装置としては、ＣＰＵ７２とＲＯＭ７４、又はＣＰＵ１２２とＲＯＭ１２４を備えて、ソフトウェア処理を実行するものに限らない。例えば、上記実施形態においてソフトウェア処理されたものの少なくとも一部を、ハードウェア処理する専用のハードウェア回路（例えばＡＳＩＣ等）を備えてもよい。すなわち、実行装置は、以下の（ａ）〜（ｃ）のいずれかの構成であればよい。（ａ）上記処理の全てを、プログラムに従って実行する処理装置と、プログラムを記憶するＲＯＭ等のプログラム格納装置とを備える。（ｂ）上記処理の一部をプログラムに従って実行する処理装置及びプログラム格納装置と、残りの処理を実行する専用のハードウェア回路とを備える。（ｃ）上記処理の全てを実行する専用のハードウェア回路を備える。ここで、処理装置及びプログラム格納装置を備えたソフトウェア実行装置や、専用のハードウェア回路は複数であってもよい。
【０１５７】
・「記憶装置について」
上記実施形態では、写像データ７６ａ，１２６ａが記憶される記憶装置を、失火検出プログラムや失火検出メインプログラム、インバランス検出メインプログラムが記憶される記憶装置、すなわちＲＯＭ７４やＲＯＭ１２４とは別の記憶装置としたが、これに限らない。
【０１５８】
・「データ解析装置について」
例えば第２実施形態において、Ｓ１６２，Ｓ１６４の処理に代えて、Ｓ２４，Ｓ２８ｂの処理等をセンター１２０によって実行してもよい。同様に第４実施形態や第６実施形態において報知処理をセンター１２０において、報知処理を実行させる指令を送信する処理を実行するようにしてもよい。
【０１５９】
第２実施形態において、図５（ｂ）の処理を、例えばユーザが所持する携帯端末によって実行してもよい。これは、携帯端末に図５（ｂ）の処理を実行するアプリケーションプログラムをインストールしておくことにより実現できる。なお、この際、例えばＳ１６２の処理におけるデータの送信が有効な距離が車両の長さ程度である設定とする等して、車両ＩＤの送受信処理を削除してもよい。第４実施形態や第６実施形態においても同様である。
【０１６０】
・「第１実施形態及び第２実施形態の写像データについて」
中間層の活性化関数ｈ（ｘ）としては、全ての次元で同一の関数とすることは必須ではない。
【０１６１】
失火の確率を出力とする写像を構成するニューラルネットワークとしては、中間層が１層のニューラルネットワークに限らない。例えば、中間層が２層以上のニューラルネットワークであってもよい。中間層の層数が多い場合、図４に記載したシステムへの利用が制御装置７０の演算負荷を軽減するうえで特に有効である。
【０１６２】
活性化関数ｈ（ｘ）としては、ハイパボリックタンジェントを用いるものに限らない。例えばロジスティックジグモイド関数であってもよい。図２及び図５の処理における活性化関数ｆ（ｘ）としては、ハイパボリックタンジェントを用いるものに限らない。例えばロジスティックジグモイド関数であってもよい。この場合、ソフトマックス関数を用いることなく、活性化関数ｆ（ｘ）の出力を確率Ｐとしてもよい。この場合、気筒＃１〜＃４のそれぞれで失火が生じた確率Ｐ（１）〜Ｐ（４）が、互いに独立に「０」〜「１」の値をとることとなる。
【０１６３】
失火の確率を出力する写像としては、ニューラルネットワークを用いるものに限らない。例えば、微小回転時間Ｔ３０等、写像の入力とするために取得したデータの次元を主成分分析によって低減させたパラメータを規定する係数を、上記入力側係数ｗＦｉｊに代えてもよい。
【０１６４】
・「第３実施形態の写像データについて」
車両において実行される演算に用いられる写像を規定する写像データを、Ｓ２６４の処理において例示した写像を規定するデータとしてもよい。
【０１６５】
例えば図８の記載によれば、ニューラルネットワークの中間層の層数は、２層よりも多い表現となっているが、これに限らない。
この実施形態では、活性化関数ｈ，ｈ１，ｈ２，…ｈαを、ＲｅＬＵとし、出力の活性化関数をソフトマックス関数としたが、これに限らない。例えば活性化関数ｈ，ｈ１，ｈ２，…ｈαを、ハイパボリックタンジェントとしてもよい。また、例えば活性化関数ｈ，ｈ１，ｈ２，…ｈαをロジスティックジグモイド関数としてもよい。
【０１６６】
また、例えば出力の活性化関数を、ロジスティックジグモイド関数としてもよい。この場合、例えば出力層のノード数を１個とし、出力変数を失火変数ＰＲとすればよい。その場合、出力変数の値が所定値以上である場合に異常と判定することによって、異常の有無を判定できる。
【０１６７】
・「第５実施形態及び第６実施形態の写像データについて」
例えばＳ３１６ａにおいて、ニューラルネットワークの中間層の層数を２層以上としてもよい。
【０１６８】
Ｓ３１６ａにおいて、ニューラルネットワークの中間層の層数は、２層よりも多い表現となっているが、これに限らない。特に、制御装置７０の演算負荷を軽減する観点からは、ニューラルネットワークの中間層の層数を、１層または２層にまで絞ることが望ましい。
【０１６９】
この実施形態では、活性化関数ｈ，ｆ，ｈ１，ｈ２，…ｈαを、ハイパボリックタンジェントとしたが、これに限らない。例えば活性化関数ｈ，ｈ１，ｈ２，…ｈαのうちの一部または全てを、ＲｅＬＵとしてもよく、また例えば、ロジスティックジグモイド関数としてもよい。
【０１７０】
インバランス率Ｒｉｖを出力する検出用写像としては、いずれか１つの気筒に限って燃料噴射量が想定したものからずれる現象を対象として学習されたものに限らない。例えば２つの気筒において燃料噴射量が想定したものからずれる現象を対象として学習されたものであってもよい。この場合、写像への入力にクランク軸２４の回転周波数の１次成分の強度を含めてもよい。
【０１７１】
・「機械学習のアルゴリズムについて」
機械学習のアルゴリズムとしては、ニューラルネットワークを用いるものに限らない。例えば回帰式を用いてもよい。これは、上記ニューラルネットワークにおいて中間層を備えないものに相当する。また、例えばサポートベクトルマシンを用いてもよい。この場合、出力の値の大きさ自体には意味が無く、例えば、その値が正であるか否かに応じて、失火が生じたか否かを表現する。換言すれば、燃焼状態変数の値が３値以上の値を有してそれらの値の大小が失火の確率の大小を表現するものとは相違する。
【０１７２】
・「写像データの生成について」
上記実施形態では、クランク軸２４にトルクコンバータ６０及び変速装置６４を介してダイナモメータが接続された状態で内燃機関１０を稼働した時のデータを訓練データとして用いたが、これに限らない。例えば車両ＶＣに搭載された状態で内燃機関１０が駆動されたときにおけるデータを訓練データとして用いてもよい。
【０１７３】
・「外部側送信処理について」
Ｓ２６６の処理では、失火変数ＰＲの値を送信したが、これに限らない。例えば、出力活性化関数としてのソフトマックス関数の入力となる原型変数ｙＲ（１），ｙＲ（２）の値を送信してもよい。また例えば、センター１２０において、Ｓ２２８〜Ｓ２３６の処理を実行することとし、異常があるか否かの判定結果を送信してもよい。
【０１７４】
・「既定の運転状態について」
気筒間の燃焼状態のばらつきを伴う内燃機関１０の運転状態であれば、失火や気筒間空燃比インバランス以外の運転状態を状態検出システムの検出態様としてもよい。例えば吸気バルブや排気バルブの開弁固着により気筒内での吸気の圧縮が不十分な状態となる、いわゆる圧縮抜けが特定の気筒で発生した場合にも、気筒間の燃焼状態にばらつきが生じてクランク軸２４の回転変動が大きくなる。そのため、こうした圧縮抜けの検出を、上述の回転波形変数及び路面状態変数を入力とした検出用写像を用いて行うようにすれば、路面の状態が与える影響を踏まえたかたちで圧縮抜けを高精度に検出できる。
【０１７５】
・「内燃機関について」
上記実施形態では、燃料噴射弁として、燃焼室１８内に燃料を噴射する筒内噴射弁を例示したがこれに限らない。例えば吸気通路１２に燃料を噴射するポート噴射弁であってもよい。また例えば、ポート噴射弁と筒内噴射弁との双方を備えてもよい。
【０１７６】
内燃機関としては、火花点火式内燃機関に限らず、例えば燃料として軽油等を用いる圧縮着火式内燃機関等であってもよい。
内燃機関が駆動系を構成すること自体必須ではない。例えば、車載発電機にクランク軸が機械的に連結され、駆動輪６９とは動力伝達が遮断されたいわゆるシリーズハイブリッド車に搭載されるものであってもよい。
【０１７７】
・「車両について」
車両としては、車両の推進力を生成する装置が内燃機関のみとなる車両に限らず、例えば「内燃機関について」の欄に記載したシリーズハイブリッド車以外にも、パラレルハイブリッド車や、シリーズ・パラレルハイブリッド車であってもよい。
【０１７８】
・「そのほか」
クランク軸と駆動輪との間に介在する駆動系装置としては、有段の変速装置に限らず、例えば無段変速装置であってもよい。
【符号の説明】
【０１７９】
１０…内燃機関、１２…吸気通路、１４…スロットルバルブ、１６…吸気バルブ、１８…燃焼室、２０…燃料噴射弁、２２…点火装置、２４…クランク軸、２６…排気バルブ、２８…排気通路、３０…触媒、３２…ＥＧＲ通路、３４…ＥＧＲバルブ、４０…吸気側バルブタイミング可変装置、４２…吸気側カム軸、４４…排気側バルブタイミング可変装置、４６…排気側カム軸、５０…クランクロータ、５２…歯部、５４…欠け歯部、６０…トルクコンバータ、６２…ロックアップクラッチ、６４…変速装置、６６…入力軸、６８…出力軸、６９…駆動輪、７０…制御装置、７２…ＣＰＵ、７４…ＲＯＭ、７４ａ…プログラム、７４ｃ…サブプログラム、７６…記憶装置、７６ａ…写像データ、７７…周辺回路、７８…ローカルネットワーク、７９…通信機、８０…クランク角センサ、８２…エアフローメータ、８３…空燃比センサ、８４…水温センサ、８６…シフト位置センサ、８８…加速度センサ、９０…警告灯、１１０…ネットワーク、１２０…センター、１２２…ＣＰＵ、１２４…ＲＯＭ、１２４ａ…メインプログラム、１２６…記憶装置、１２６ａ…写像データ、１２７…周辺回路、１２８…ローカルネットワーク、１２９…通信機。
【要約】
【課題】失火や気筒間の空燃比のばらつき等の既定の状態の検出精度を向上させた内燃機関の状態検出システムを提供する。
【解決手段】制御装置７０は、車両に搭載された内燃機関１０に適用されて、気筒間の燃焼状態のばらつきを伴う内燃機関１０の既定の運転状態を検出する内燃機関の状態検出システムである。制御装置７０は、実行装置であるＣＰＵ７２と記憶装置７６とを備えている。記憶装置７６は、機械学習によって学習されたパラメータに基づく回転波形変数及び路面状態変数の結合演算により燃焼状態変数の値を出力する検出用写像を規定するデータである写像データ７６ａを記憶している。ＣＰＵ７２は、回転波形変数及び路面状態変数の値を取得する取得処理、回転波形変数及び路面状態変数のそれぞれの値を入力とした検出用写像の出力値に基づいて内燃機関１０が既定の運転状態にあるか否かを判定する判定処理、を実行する。
【選択図】図１【図１】
0006673519.tif 000002
【図２】
0006673519.tif 000003
【図３】
0006673519.tif 000004
【図４】
0006673519.tif 000005
【図５】
0006673519.tif 000006
【図６】
0006673519.tif 000007
【図７】
0006673519.tif 000008
【図８】
0006673519.tif 000009
【図９】
0006673519.tif 000010
【図１０】
0006673519.tif 000011
【図１１】
0006673519.tif 000012