(57)【要約】  この明細書に記載のシステム、方法、および他の実施形態は、人工知能（ＡＩ）プログラムの実行の管理に関する。一実施形態では、方法は、ＡＩプログラムによって生成された少なくとも現在の予測を示す、ＡＩプログラムに関連付けられた実行状態を特定するために、ＡＩプログラムの実行を監視することを含む。方法は、実行状態がキルスイッチ閾値を満たすときに、ＡＩプログラムの実行を停止するように制御バイナリを作動させることを含む。キルスイッチ閾値は、不利な動作条件を示すＡＩプログラムの実行に関連する条件を定義する。
2021533486.tif 000002
【特許請求の範囲】
【請求項１】
人工知能（ＡＩ）プログラムの実行を管理するための監視制御システムであって、
ひとつ以上のプロセッサ（１１０）と、
ひとつ以上の前記プロセッサに通信可能に結合されたメモリ（１２０）と、を備え、
前記メモリは、ウォッチドッグモジュール（１４０）を格納しており、
前記ウォッチドッグモジュールは、ひとつ以上の前記プロセッサによって実行されると、ひとつ以上の前記プロセッサに実行させる命令として、
前記ＡＩプログラムによって生成された少なくとも現在の予測を示す、前記ＡＩプログラムに関連付けられた実行状態を特定するために、前記ＡＩプログラムの実行を監視させる命令と、
前記実行状態が、不利な動作条件を示す前記ＡＩプログラムの実行に関連する条件を定義するキルスイッチ閾値を満たすときに、前記ＡＩプログラムの実行を停止するように制御バイナリを作動させる命令を含む、監視制御システム。
【請求項２】
ひとつ以上の前記プロセッサによって実行されると、ひとつ以上の前記プロセッサに、前記制御バイナリを前記ＡＩプログラムに注入させる命令を含む実行モジュール（１３０）をさらに備え、
前記制御バイナリは、前記ＡＩプログラムの実行を中断するために実行される実行可能コードの一部である、請求項１に記載の監視制御システム。
【請求項３】
前記実行モジュールは、前記制御バイナリを注入する命令として、前記制御バイナリを検出から難読化するために、前記ＡＩプログラム内のランダムな位置に前記制御バイナリを挿入すること、および、前記ＡＩプログラムを中断するために、前記制御バイナリを用いて前記ＡＩプログラムのプログラムフローを動的に変更すること、のうちのひとつを実行する命令を含む、請求項２に記載の監視制御システム。
【請求項４】
前記ウォッチドッグモジュールは、前記制御バイナリを作動する命令として、前記ＡＩプログラムの実行を停止させる前記制御バイナリの停止機能を実行する命令と、前記ＡＩプログラムの実行を停止させた状態から関連デバイスを安全に回復させるフェイルオーバ機能を実行する命令を含む、請求項１〜３いずれか１項に記載の監視制御システム。
【請求項５】
前記ウォッチドッグモジュールは、前記ＡＩプログラムの実行を監視する命令として、前記実行状態を特定するために前記ＡＩプログラムの内部状態に関連付けられたメモリロケーションを検査することによって前記ＡＩプログラムを自動的に監視する命令を含み、
前記現在の予測は、前記ＡＩプログラムがひとつ以上のセンサ入力を処理した結果、前記ＡＩプログラムによって生成される制御出力を含む、請求項１〜３いずれか１項に記載の監視制御システム。
【請求項６】
前記ウォッチドッグモジュールは、前記ＡＩプログラムの実行を監視する命令として、リモートデバイスで前記実行状態を受信し、前記リモートデバイスから前記実行状態を監視して、前記実行状態が前記キルスイッチ閾値を満たすか否かを判断するための命令を含み、
前記ウォッチドッグモジュールは、前記リモートデバイスから制御信号を送信することによって、前記制御バイナリを作動する命令を含む、請求項１〜３いずれか１項に記載の監視制御システム。
【請求項７】
前記ＡＩプログラムは、機械学習アルゴリズムであり、
前記キルスイッチ閾値は、標準動作範囲に違反する前記ＡＩプログラムの動作に応じて前記不利な動作条件を定義する、請求項１〜６いずれか１項に記載の監視制御システム。
【請求項８】
ＡＩプログラムは車両内に統合されており、前記監視制御システムは前記車両から離れている、請求項１〜７いずれか１項に記載の監視制御システム。
【請求項９】
人工知能（ＡＩ）プログラムの実行を管理するための命令を格納する非一時的コンピュータ可読媒体であって、
ひとつ以上のプロセッサ（１１０）によって実行されると、ひとつ以上の前記プロセッサに、
前記ＡＩプログラムによって生成された少なくとも現在の予測を示す、前記ＡＩプログラムに関連付けられた実行状態を特定するために、前記ＡＩプログラムの実行を監視させ、
前記実行状態が、不利な動作条件を示す前記ＡＩプログラムの実行に関連する条件を定義するキルスイッチ閾値を満たすときに、前記ＡＩプログラムの実行を停止するように制御バイナリを作動させる、非一時的コンピュータ可読媒体。
【請求項１０】
前記制御バイナリを前記ＡＩプログラムに注入する命令をさらに含み、
前記制御バイナリは、前記ＡＩプログラムの実行を中断するために実行される実行可能コードの一部である、請求項９に記載の非一時的コンピュータ可読媒体。
【請求項１１】
前記制御バイナリを作動する命令は、前記ＡＩプログラムの実行を停止させる前記制御バイナリの停止機能を実行する命令と、前記ＡＩプログラムの実行を停止させた状態から関連デバイスを安全に回復させるフェイルオーバ機能を実行する命令とを含む、請求項９または請求項１０に記載の非一時的コンピュータ可読媒体。
【請求項１２】
前記ＡＩプログラムの実行を監視する命令は、前記実行状態を特定するために前記ＡＩプログラムの内部状態に関連付けられたメモリロケーションを検査することによって前記ＡＩプログラムを自動的に監視する命令を含み、
前記現在の予測は、前記ＡＩプログラムがひとつ以上のセンサ入力を処理した結果、前記ＡＩプログラムによって生成される制御出力を含む、請求項９〜１１いずれか１項に記載の非一時的コンピュータ可読媒体。
【請求項１３】
前記ＡＩプログラムの実行を監視する命令は、リモートデバイスで前記実行状態を受信し、前記リモートデバイスから前記実行状態を監視して、前記実行状態が前記キルスイッチ閾値を満たすか否かを判断するための命令を含み、
前記制御バイナリを作動する命令は、前記制御バイナリを実行させるために前記リモートデバイスから制御信号を送信する命令を含む、請求項９〜１１いずれか１項に記載の非一時的コンピュータ可読媒体。
【請求項１４】
人工知能（ＡＩ）プログラムの実行を管理するための方法であって、
前記ＡＩプログラムによって生成された少なくとも現在の予測を示す、前記ＡＩプログラムに関連付けられた実行状態を特定するために、前記ＡＩプログラムの実行を監視することと、
前記実行状態が、不利な動作条件を示す前記ＡＩプログラムの実行に関連する条件を定義するキルスイッチ閾値を満たすときに、前記ＡＩプログラムの実行を停止するように制御バイナリを作動することを含む、方法。
【請求項１５】
前記制御バイナリを前記ＡＩプログラムに注入することをさらに含み、
前記制御バイナリは、前記ＡＩプログラムの実行を中断する実行可能コードの一部である、請求項１４に記載の方法。
【請求項１６】
前記制御バイナリを注入することは、前記制御バイナリを検出から難読化するために、前記ＡＩプログラム内のランダムな位置に前記制御バイナリを挿入すること、および、前記ＡＩプログラムを中断するために、前記制御バイナリを用いて前記ＡＩプログラムのプログラムフローを動的に変更すること、のうちのひとつを含む、請求項１５に記載の方法。
【請求項１７】
前記制御バイナリを作動することは、前記ＡＩプログラムの実行を停止させる前記制御バイナリの停止機能を実行することと、前記ＡＩプログラムの実行を停止させた状態から関連デバイスを安全に回復させるフェイルオーバ機能を実行することを含む、請求項１４〜１６いずれか１項に記載の方法。
【請求項１８】
前記ＡＩプログラムの実行を監視することは、前記実行状態を特定するために前記ＡＩプログラムの内部状態に関連付けられたメモリロケーションを検査することによって前記ＡＩプログラムを自動的に監視する命令を含み、
前記現在の予測は、前記ＡＩプログラムがひとつ以上のセンサ入力を処理した結果、前記ＡＩプログラムによって生成される制御出力を含む、請求項１４〜１６いずれか１項に記載の方法。
【請求項１９】
前記ＡＩプログラムの実行を監視することは、リモートデバイスで前記実行状態を受信し、前記リモートデバイスから前記実行状態を監視して、前記実行状態が前記キルスイッチ閾値を満たすか否かを判断することを含み、
前記制御バイナリを作動することは、前記リモートデバイスから送信された制御信号に応答して行われる、請求項１４〜１６いずれか１項に記載の方法。
【請求項２０】
前記ＡＩプログラムは、機械学習アルゴリズムであり、
前記キルスイッチ閾値は、標準動作範囲に違反する前記ＡＩプログラムの動作に応じて前記不利な動作条件を定義する、請求項１４〜１９いずれか１項に記載の方法。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
この出願は、２０１８年１０月１８日に出願された米国特許出願第１６／１６３９３６号の利益を主張する。上記出願の全開示が、参照によりこの明細書に組み込まれる。
【技術分野】
【０００２】
本開示は、一般に、人工知能（ＡＩ）プログラムの管理を改善するためのシステムおよび方法に関し、特に、不利な動作条件を防止するためのＡＩプログラムの実行を監視するシステムおよび方法に関する。
【背景技術】
【０００３】
この欄は、必ずしも公知技術に該当しない、本開示に関連する背景情報を提供する。
【０００４】
人工知能（ＡＩ）は、電子処理機能へのアプローチにおける重要な進歩を表している。たとえば、環境またはデータの態様を認識し、そこからインテリジェントな判断を下すコンピューティングシステムの機能は、多くの異なるアプリケーションに関して潜在的に強力なツールである。さらに、人工知能プログラムは、ベイジアンネットワーク、隠れマルコフモデル、カルマンフィルタなどの確率的方法、ニューラルネットワーク、サポートベクトルマシンなどの統計的方法などの、多くの異なる形態で実施されてもよい。いずれのアプローチを採用しても、開発された電子計算システムは、一般に、非決定論的で複雑であるという共通性を有しており、定義されたガイドラインや機能安全基準の範囲内で性能を予測したり、保証したりすることは困難である。
【０００５】
ＡＩプログラムが、たとえば、セキュリティ、性能、安全性などに関して、種々の基準に適合することを保証することは、特に、プログラムが、自己学習、および／または、他の方法で種々の機能を実行するために自律的に動作している場合、非常に困難であり得る。ＡＩプログラムの機能性は、多くの場合、そのようなシステムの「訓練段階」で使用されるデータの質と結びついている。時間の経過とともに、ＡＩベースのシステムの「学習」プロセスに十分なデータが供給されると、実行と機能は、望ましい標準と結果に近づくか、それよりも良くなる可能性がある。ＡＩプログラムの出力を決定論的な方法で予測する際の主な問題は、ＡＩプログラムの学習メカニズムに入力された少量の「不良」、または、不正確なデータが、プログラムの出力に大きく未知の偏差をもたらし得ることである。このような状況下では、ＡＩプログラムの理解は、たとえば、ＡＩプログラムが動作し、さらなる理解を発展させるにつれて動的に進化する抽象的な内部ノード、潜在空間、および／または、他のモデル／メカニズム内で発展する。
【０００６】
このように、ＡＩプログラムが抽象的で自律的であるがゆえに、特に機能安全基準に関連する特定の制約内でＡＩプログラムの動作を保証することは、独特の困難さがある。また、ＡＩプログラムが複雑化し、能力が向上するにつれて、所定の範囲外の機能をもつＡＩプログラムが暴走する可能性が高くなる。その結果、ＡＩプログラムによって提供される機能が常に期待どおりに機能しない場合があり、セキュリティホール、障害、安全上の危険などの問題などが発生する。
【発明の概要】
【０００７】
この欄は、開示の概要を提供するが、その全範囲またはその全特徴の包括的な開示ではない。
【０００８】
一実施形態では、ＡＩプログラムの実行を管理することに関する例示的なシステムおよび方法が開示される。前述したように、ＡＩプログラムの実行は、セキュリティ、安全性、性能などの目的のために、定義された制約内にとどまるようにすることは、困難なタスクである。ＡＩプログラムは、ＡＩプログラム内の抽象的な形で保持される発展的理解にしたがって自律的に実行するため、ＡＩプログラムによって実行される動作が様々な制約（たとえば、機能安全制約）に適合することを保証することは困難である。
【０００９】
一実施形態では、ＡＩプログラムの実行状態を積極的に監視し、不利な動作状態の発生時にＡＩプログラムの実行を停止する監視制御システムが開示される。たとえば、ひとつのアプローチでは、開示された監視制御システムは、最初に制御バイナリをＡＩプログラムに注入する。制御バイナリは、一実施形態では、ＡＩプログラム内に埋め込まれた実行可能なバイナリコード（たとえば、マシンコード）である。様々なアプローチでは、制御バイナリは、監視または監視の容易化、ＡＩプログラムの実行の停止、フェイルオーバ機能の実行などを含むひとつ以上の機能を実行することができる。
【００１０】
一般に、ＡＩプログラムは、車両制御、物体検出、経路計画、物体識別などの機能を提供するために実行されると考える。したがって、車両と言された機能の文脈内において、ＡＩプログラムが暴走状態で（たとえば、意図した制約から外れて）実行を開始した場合、人や物体に害を及ぼす虞がある。さらに、ＡＩプログラムがセキュリティ侵害、または、他の操作を防止するメカニズムを含む場合、特にＡＩプログラムがそのような動作を防止するために積極的に適応するか、または対策を含む場合、外部アプローチを介してＡＩプログラムの実行を停止することは困難である。
【００１１】
したがって、ＡＩプログラムが、車両を誘導するためにセンサ入力に基づいて制御を提供しており、不整合な方法（たとえば、連続した時間ステップにおける相反する制御）、または、衝突をもたらす可能性のある方法（たとえば、車両を道路から逸脱させる）で制御を提供することによって不規則な動作を開始すると、監視制御システムは、ＡＩプログラムの実行を停止させるために制御バイナリを作動させる。ＡＩプログラムは、特定のタスクについて時間をかけて学習し、内部化された理解を発展させる可能性があるため、不利な動作条件の原因を特定することは困難である。したがって、監視制御システムは、ＡＩプログラムの特定の実行状態などの不利な動作状態の指標を監視する。一実施形態では、監視制御システムは、ＡＩプログラムの実行状態を監視して、ＡＩプログラムが不利な動作状態に向かって進化しているか、そうでなければいつ不利な動作状態に入る可能性があるかを検出する。
【００１２】
ひとつのアプローチでは、監視制御システムは、内部の状態／値、出力として提供される予測値、入力／内部／出力の値の統計的傾向、および、ＡＩプログラムに影響を及ぼすか、または、ＡＩプログラムの現在の状態を示す可能性がある他の態様（たとえば、入力）を監視する。たとえば、監視制御システムは、定義された許容範囲外の値、有意な変化（たとえば、特定の大きさよりも大きい変化、または、特定の性質の変化）、定義された範囲／傾向とは逆の特定の方向に一貫して傾向を示す値、既知の不利な状態に関連する値などについて、言及された態様を監視することができる。
【００１３】
ひとつ以上の実施形態では、監視制御システムは、通信チャネルを介して提供される情報、制御バイナリに定義されたポリシー、および／または、それらの組み合わせを介して、言及された条件の実行状態を遠隔的に監視する。いずれの場合も、制御バイナリはＡＩプログラムと統合されているので、ＡＩプログラムは、たとえば、制御バイナリがＡＩプログラムの実行を停止するのを阻止するように動作することができない。したがって、不利な動作条件（たとえば、検出された実行状態がキルスイッチ閾値を満たす）が検出されると、監視制御システムは、ＡＩプログラムの実行を停止するために制御バイナリを作動させる。一実施形態では、制御バイナリは、ＡＩプログラムのプログラムフローをリダイレクトするためのキルスイッチを提供することができ、それによってＡＩプログラムのさらなる命令の実行を回避することによって実行を停止する。別のアプローチでは、制御バイナリは、ＡＩプログラムが実行されているデバイスをリセットするか、ＡＩプログラムのさらなる動作を阻止するように機能する。いずれの場合においても、監視制御システムは、ＡＩプログラムによって提供される改善された計算処理の信頼性の高い統合を通じて、ＡＩプログラムを管理する関連システムの能力を向上し、不利な動作条件を回避し、それによって全体的な機能を向上する。
【００１４】
一実施形態では、人工知能（ＡＩ）プログラムの実行を管理するための監視制御システムが開示される。監視制御システムは、ひとつ以上のプロセッサと、ひとつ以上のプロセッサに通信可能に結合されたメモリと、を備える。メモリは、ひとつ以上のプロセッサによって実行されると、ひとつ以上のプロセッサに、ＡＩプログラムによって生成される少なくとも現在の予測を示す、ＡＩプログラムに関連付けられた実行状態を特定するために、ＡＩプログラムの実行を監視させる命令を含むウォッチドッグモジュールを格納する。ウォッチドッグモジュールは、実行状態がキルスイッチ閾値を満たすときに、ＡＩプログラムの実行を停止するように制御バイナリを作動させる命令を含む。キルスイッチ閾値は、不利な動作条件を示すＡＩプログラムの実行に関連する条件を定義する。
【００１５】
一実施形態では、人工知能（ＡＩ）プログラムの実行を管理するための非一時的コンピュータ可読媒体が開示される。コンピュータ可読媒体は、ひとつ以上のプロセッサによって実行されると、ひとつ以上のプロセッサに、開示された機能を実行させる命令を格納する。命令は、ＡＩプログラムによって生成された少なくとも現在の予測を示す、ＡＩプログラムに関連付けられた実行状態を特定するために、ＡＩプログラムの実行を監視する命令を含む。命令は、実行状態がキルスイッチ閾値を満たすときに、ＡＩプログラムの実行を停止するように制御バイナリを作動させる命令を含む。キルスイッチ閾値は、不利な動作条件を示すＡＩプログラムの実行に関連する条件を定義する。
【００１６】
一実施形態では、人工知能（ＡＩ）プログラムの実行を管理する方法が開示される。方法は、ＡＩプログラムによって生成された少なくとも現在の予測を示す、ＡＩプログラムに関連付けられた実行状態を特定するために、ＡＩプログラムの実行を監視することを含む。方法は、実行状態がキルスイッチ閾値を満たすときに、ＡＩプログラムの実行を停止するように制御バイナリを作動させることを含む。キルスイッチ閾値は、不利な動作条件を示すＡＩプログラムの実行に関連する条件を定義する。
【図面の簡単な説明】
【００１７】
この明細書に組み込まれ、その一部を構成する添付図面は、本開示の様々なシステム、方法、および他の実施形態を示している。図中の図示された要素の境界（たとえば、ボックス、ボックスのグループ、または他の形状）は、境界の一実施形態を表すことが理解されるであろう。いくつかの実施形態では、ひとつの要素が複数の要素として設計されてもよく、または複数の要素がひとつの要素として設計されてもよい。いくつかの実施形態では、別の要素の内部コンポーネントとして示される要素は、外部コンポーネントとして実装されてもよく、その逆もあり得る。さらに、要素は縮尺どおりに描かれない場合がある。
【図１】ＡＩプログラムの実行の管理に関連する監視制御システムの一実施形態を示す図である。
【図２】ＡＩプログラム内に具現化された制御バイナリの一例を示す図である。
【図３】制御バイナリを使用してＡＩプログラムの実行を自動的に停止することに関する方法の一実施形態を示す図である。
【図４】制御バイナリをＡＩプログラムに動的に注入することに関する方法の一実施形態を示す図である。
【発明を実施するための形態】
【００１８】
ＡＩプログラムの実行の管理に関するシステム、方法、および他の実施形態が開示される。人工知能ベースのプログラムの実行が安全で確実であることを保証することは、困難なタスクである。ＡＩベースのプログラムは、一般に抽象的な形でＡＩプログラム内に保持される学習された理解にしたがって実行されるため、ＡＩプログラムがどのように機能するか、ＡＩプログラムの動作が様々な制約（たとえば、機能安全制約）に適合するか否かを正確に理解することは困難である。
【００１９】
したがって、一実施形態では、監視制御システムは、ＡＩプログラムの実行を積極的（能動的）に監視し、不利な動作条件、または、不利な動作条件の潜在的な開始を定義する指標の検出時に実行を停止する。たとえば、ひとつのアプローチでは、開示された監視制御システムは、最初に、制御バイナリをＡＩプログラムに注入する。制御バイナリは、一実施形態では、ＡＩプログラム内に埋め込まれた実行可能なバイナリコード（たとえば、マシンコード）である。監視制御システムは、制御バイナリがＡＩプログラムのコードによって難読化されるように、制御バイナリを、ＡＩプログラムを形成するファームウェアに注入する。様々なアプローチにおいて、制御バイナリは、ＡＩプログラムの監視、ＡＩプログラムの実行の停止、フェイルオーバ機能の実行などを含むひとつ以上の機能を実行することができる。いずれの場合も、制御バイナリは、ＡＩプログラムが望ましくない方法で動作を開始した場合に、ＡＩプログラムを制御するためのメカニズム（機構）を監視制御システムに提供する。
【００２０】
一般に、車両制御、物体検出、経路計画、物体識別などの機能を提供するために、車両の文脈内で実行される例示的なＡＩプログラムを考える。車両と言及された機能の文脈内で、ＡＩプログラムが暴走状態で（たとえば、意図した制約から外れて）実行を開始した場合、人や物体に害を及ぼす虞がある。さらに、ＡＩプログラムがセキュリティ侵害、または、他の操作を防止するメカニズムを含む場合、特にＡＩプログラムがそのような動作を防止するために積極的に適応する場合、外部アプローチを介してＡＩプログラムの実行を停止することは困難である。
【００２１】
ＡＩプログラムが、車両を誘導するためにセンサ入力に基づいて制御を提供しており、不整合な方法（たとえば、連続した時間ステップにおける相反する制御）、または、衝突をもたらす可能性のある方法（たとえば、車両を道路から逸脱させる）で制御を提供することによって不規則な動作を開始すると、監視制御システムは、ＡＩプログラムの実行を停止させるために制御バイナリを作動させる。ＡＩプログラムは、特定のタスクについて時間をかけて学習し、内部化された理解を発展させる可能性があるため、不利な動作条件の原因を特定することは困難である。したがって、監視制御システムは、ＡＩプログラムの特定の実行状態などの不利な動作状態の指標を監視する。一実施形態では、監視制御システムは、ＡＩプログラムの実行状態を監視して、ＡＩプログラムが不利な動作状態に向かって進化しているか、そうでなければいつ不利な動作状態に入る可能性があるかを検出する。
【００２２】
ひとつのアプローチでは、監視制御システムは、内部の状態／値、出力として提供される予測値、言及された値の統計的傾向、および、ＡＩプログラムに影響を及ぼすか、または、ＡＩプログラムの現在の状態を示す可能性がある他の態様（たとえば、入力）を監視する。たとえば、監視制御システムは、定義された許容範囲外の値、有意な変化（たとえば、特定の大きさよりも大きい変化、または、特定の性質の変化）、定義された範囲／傾向とは逆の特定の方向に一貫して傾向を示す値、既知の不利な状態に関連する値などについて、言及された態様を監視することができる。
【００２３】
ひとつ以上の実施形態では、監視制御システムは、通信チャネルを介して提供される情報、制御バイナリに定義されたポリシー、および／または、それらの組み合わせを介して、言及された条件の実行状態を遠隔的に監視する。いずれの場合も、制御バイナリはＡＩプログラムと統合されているので、ＡＩプログラムは、たとえば、制御バイナリがＡＩプログラムの実行を停止するのを阻止するように動作することができない。したがって、不利な動作条件（たとえば、検出された実行状態がキルスイッチ閾値を満たす）が検出されると、監視制御システムは、ＡＩプログラムの実行を停止するために制御バイナリを作動させる。一実施形態では、制御バイナリは、ＡＩプログラムのプログラムフローをリダイレクトするためのキルスイッチを提供することができ、それによってＡＩプログラムのさらなる命令の実行を回避することによって実行を停止する。別のアプローチでは、制御バイナリは、ＡＩプログラムが実行されているデバイスをリセットするか、ＡＩプログラムのさらなる動作を阻止するように機能する。いずれの場合においても、監視制御システムは、ＡＩプログラムによって提供される改善された計算処理の信頼性の高い統合を通じて、ＡＩプログラムを管理する関連システムの能力を向上し、不利な動作条件を回避し、それによって全体的な機能を向上する。
【００２４】
図１を参照すると、監視制御システム１００の一実施形態が示されている。この明細書では、監視制御システム１００に関する構成について説明するが、実施形態は、図示のような単一システムに限定されない。いくつかの実装形態では、監視制御システム１００は、クラウドコンピューティングシステム、クラスタコンピューティングシステム、分散コンピューティングシステム、サービスとしてのＳａａＳシステムなどとして具現化することができる。ＳａａＳは、software as a serviceの略称である。監視制御システム１００は、説明の目的で単一の装置として示され、説明されているが、開示された構成要素が構成され得る全体的な可能な構成を制限するものとして解釈されるべきではない。たとえば、別個のモジュール、メモリ、データベースなどは、様々な組み合わせで様々なコンピューティングシステムに分散されてもよい。
【００２５】
監視制御システム１００は、また、様々な要素を含む。様々な実施形態では、監視制御システム１００が、図１に示される要素のすべてを有さなくてもよいことが理解される。監視制御システム１００は、図１に示される様々な要素の任意の組み合わせを有することができる。さらに、監視制御システム１００は、図１に示される様々な要素に対して追加の要素を有することができる。いくつかの構成では、監視制御システム１００は、図１に示されるひとつ以上の要素なしで実施されてもよい。さらに、様々な要素は、図１の監視制御システム１００内に位置するものとして示されているが、これらの要素のうちのひとつ以上が監視制御システム１００の外部に配置できることが理解される。さらに、示された要素は、長い距離で物理的に分離されてもよい。
【００２６】
さらに、図示の単純化および明確化のために、参照番号が適宜、対応するまたは類似する要素を示すために、異なる図面間で繰り返されていることが理解される。さらに、この明細書に記載の実施形態は、記載された要素の様々な組み合わせを使用して実施できると理解される。この明細書に記載の実施形態の完全な理解を提供するために、多数の具体的な内容を説明する。しかしながら、当業であれば、この明細書に記載された実施形態は、これらの要素の様々な組み合わせを用いて実施され得ることを理解できる。
【００２７】
いずれの場合も、監視制御システム１００は、潜在的に不利な動作条件を処理することによって人工知能ベースのプログラムの実行を改善することに関し、この明細書に開示されているような方法、および、他の機能を実行するために実装される。言及された機能と方法は、図のさらなる説明でより明らかになる。さらに、監視制御システム１００は、プロセッサ１１０を備えるものとして示されている。様々な実施形態において、プロセッサ１１０は、監視制御システム１００の一部であってもよく、監視制御システム１００は、データバス、または、別の通信経路を介してプロセッサ１１０にアクセスしてもよく、プロセッサ１１０は、監視制御システム１００によってアクセス可能なリモートコンピューティングリソースであってもよい。いずれの場合も、プロセッサ１１０は、マイクロプロセッサ、ＡＳＩＣ、グラフィックス処理装置（ＧＰＵ）、電子制御装置（ＥＣＵ）、または、他の電子デバイスの制御のために使用され得る様々な電子出力をそこから生成するための機械可読命令を実行することが可能な他のコンピューティングコンポーネント、のような電子デバイスである。
【００２８】
一実施形態では、監視制御システム１００は、実行モジュール１３０と、ウォッチドッグモジュール１４０を格納するメモリ１２０を備える。メモリ１２０は、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、ハードディスクドライブ、フラッシュメモリ、または、実行モジュール１３０およびウォッチドッグモジュール１４０を格納するための他の適切なメモリである。実行モジュール１３０およびウォッチドッグモジュール１４０を、以下ではモジュール１３０、１４０と示すことがある。モジュール１３０、１４０は、たとえば、プロセッサ１１０によって実行されると、プロセッサ１１０に、この明細書に開示される様々な機能を実行させるコンピュータ可読命令である。様々な実施形態では、モジュール１３０、１４０は、ハードウェアロジック、ＡＳＩＣ、グラフィックス処理装置（ＧＰＵ）、プロセッサ１１０のコンポーネント、電子メモリ、または、二次プログラム（たとえば、制御バイナリ１６０）内に埋め込まれた命令などを含むことができるが、これらに限定されない様々な形態で実装され得る。
【００２９】
監視制御システム１００は、一実施形態では、データベース１５０を備える。データベース１５０は、一実施形態では、メモリ１２０、分散メモリ、クラウドベースのメモリ、または、別のデータストアに格納された電子データ構造であり、格納されたデータの分析、格納されたデータの提供、格納されたデータの整理などのためにプロセッサ１１０によって実行され得るルーチンで構成される。一実施形態では、データベース１５０は、様々な決定を実行する際にモジュール１３０、１４０によって使用されるデータを格納する。一実施形態では、データベース１５０は、制御バイナリ１６０、実行状態１７０、および／または、開示された機能を実行する際にモジュール１３０、１４０によって使用され得る他のデータを格納する。
【００３０】
この明細書で使用される場合、「プログラム」という用語は、たとえば、ソースコードから派生したコンパイルされたマシンコードを指す。したがって、ＡＩプログラムは、一実施形態では、マシンコードであるコンパイルされたプログラムまたはその一部である。この明細書で使用される「マシンコード」という語句は、一般に、たとえばプロセッサ１１０、ＥＣＵ、または、他の処理装置のような、マイクロプロセッサによって実行され得る機械語命令で表されるプログラムを指す。さらに、マシンコードは、一般に、関連するハードウェアによって実装された命令セットによって定義されるオペコード（たとえば、ＮＯＯＰ命令）で構成されるプリミティブ言語、または、ハードウェア依存言語であると理解される。ＮＯＯＰは、No Operationの略称であり、ＮＯＰと称されることもある。マシンコード自体は、データ値、レジスタアドレス、メモリアドレスなどでさらに構成される。もちろん、プログラムはマシンコードであると説明されているが、さらなる実施形態では、プログラムは、アセンブリコード、または、ソースコードの別の中間表現である。この明細書でさらに使用されるように、バイナリ、バイナリコード、および他のそのような類似の語句は、一般に、マシンコードを指す。
【００３１】
一実施形態では、ＡＩプログラムは、環境認識、または、他の電子データの形での電子入力に応じてひとつ以上のタスクを達成するために機械知能を実装する個々のプログラム、または、プログラムのセットである。様々な実施形態において、ＡＩプログラムは、ベイジアンネットワーク、隠れマルコフモデル、カルマンフィルタなどの確率的方法にしたがって機能する。さらなる態様では、ＡＩプログラムは、ニューラルネットワーク、サポートベクターマシン、機械学習アルゴリズムなどのような統計的方法にしたがって機能する。もちろん、さらなる実施形態では、ＡＩプログラムは、言及されたアプローチの組み合わせ、および／または、同じアプローチの複数のものから形成されてもよい。いずれの場合も、ＡＩプログラムは、一般に、ノードの重み、抽象的な潜在空間、開発されたパラメータ化、または、電子メカニズムを捕捉する他の適切な知識、の形で具現化された内部理解を発展することによって、与えられたタスクについて学習（教師あり、または、教師なしのいずれか）する能力によって定義される。さらに、ＡＩプログラムは、一般に、計算タスクを実行し、所望の出力を提供するために、自律的（すなわち、手動のユーザ入力なし）に機能する。
【００３２】
さらに、ＡＩプログラムは、言及された機能を実現するために一緒に実行される機能とデータ構造のセットとして構成される。ＡＩプログラムは、ひとつ以上のアプローチにおいて、複数の実行の反復にわたって内部理解を発展させるように実行され、そこから、言及された出力が改善され、提供される。ＡＩプログラムは、内部理解を向上／変化させるために、連続的な反復にわたって進化することを理解されたい。ＡＩプログラムは、ある意味ではブラックボックスのように動作しており、内部の理解や構成がすぐには分からないため、ＡＩプログラムを正確に予測／制御することは困難である。さらに、ＡＩプログラムは、不利と考えられる予期しない／望ましくない動作条件を発生させる場合がある。すなわち、たとえば、ＡＩプログラムは、望ましい範囲から外れた出力をもたらす内部的な理解を発展することができる。一例として、ＡＩプログラムは、明らかな理由なしに、車両に予期せずブレーキをかける可能性がある。この出力は、たとえば、何らかの脅威とならない周囲の状況を提供されたブレーキ制御に関連付けるような学習プロセスにおける収差によって生じ得る。このような異常は、一般にまれであると考えられているが、発生する可能性があり、潜在的に重大な安全上の危険性を示している。さらに、ＡＩプログラムは、システム１００とは別のコンピューティングシステム上で実行されると説明されているが、ひとつ以上の実施形態では、ＡＩプログラムとシステム１００は、同じ場所に配置されてもよく、および／または、同じ処理リソースを共有してもよい。
【００３３】
図１に示されるように、データベース１５０は、制御バイナリ１６０、および、実行状態１７０を備える。制御バイナリ１６０は、一実施形態では、ＡＩプログラムを監視し、ＡＩプログラムの実行を停止し、フェイルオーバ機能を提供するための機能を含む実行可能なマシンコードである。もちろん、様々な実施形態では、制御バイナリ１６０は、ＡＩプログラムの実行を停止する命令を含み、他の前述した機能（たとえば、監視、フェイルオーバなど）は、他のために提供されてもよい。一実施形態では、制御バイナリ１６０は、ＡＩプログラムのプログラムフロー内に割り込み、実行をフェイルオーバ機能（たとえば、回復機能）、または、ＡＩプログラムの実行を停止させる別の命令のセットにリダイレクトすることによって、ＡＩプログラムの実行を停止する。一般に、制御バイナリ１６０は、プログラムカウンタを変更して、制御バイナリ１６０に対応する命令のシーケンス内の指定されたセクションにジャンプすることによって、プログラムフロー内に割り込む。制御バイナリ１６０は、どの命令が実行されるかを制御するプログラムカウンタ、または、他の制御フローデータ引数に関連するレジスタ、または、他のメモリロケーション（メモリ位置）を変更するように機能することができる。
【００３４】
制御バイナリ１６０によって提供されるフェイルオーバ機能は、多種多様な機能を含むことができ、一般に実装固有である。たとえば、ＡＩプログラムが車両の一部として実装される場合、フェイルオーバ機能は、ドライバに警告を提供するか、または、乗客の安全を確保するために自動プルオーバ操作を実行することができる。同様に、さらなる実装において、制御バイナリ１６０は、状況に適切なフェイルオーバ機能を実装する。
【００３５】
いずれの場合も、制御バイナリ１６０は、一般に、プラットフォーム固有であるように開発される。たとえば、制御バイナリ１６０は、ｘ８６、ｘ８６＿６４、ＡＲＭ３２、ＡＲＭ６４などの特定の命令セットにしたがって生成される。一般に、言及された命令セットは、異なるオペコードにしたがって定義され、したがって、制御バイナリ１６０は、言及された命令セットに固有のマシンコードで構成される。
【００３６】
さらなる説明として、図２は、ＡＩプログラム２１０を実行する例示的なデバイス２００を示している。制御バイナリ１６０は、ＡＩプログラム２１０のサブコンポーネントとして示されている。一般的に、後述する実行モジュール１３０は、制御バイナリ１６０がＡＩプログラム２１０、および、ＡＩプログラム２１０が格納されているメモリ内に統合され、制御バイナリ１６０がＡＩプログラム２１０と区別できなくなるように、制御バイナリ１６０をＡＩプログラム２１０に注入する。したがって、制御バイナリ１６０は、ＡＩプログラム２１０内で効果的に難読化される。注入するとは、挿入する、差し込む（割り込ませる）と称されることがある。
【００３７】
さらに、一実施形態では、制御バイナリ１６０は、ＡＩプログラム２１０の実行状態を積極的に監視することによって、または、監視制御システム１００が実行状態を監視するメカニズムを提供することによって、監視機能を提供する。たとえば、制御バイナリ１６０は、ＡＩプログラム２１０の実行状態を積極的に監視する機能を有するように構成できる。ひとつのアプローチでは、制御バイナリ１６０は、傍受する、または、他の方法で、ＡＩプログラム２１０から内部的に実行状態を取得する。
【００３８】
さらなる態様では、制御バイナリ１６０は、たとえば、アプリケーションプログラムインターフェース（ＡＰＩ）、指定レジスタ、メモリロケーション、通信データリンク、または、他の適切な手段を使用して、実行状態を監視制御システム１００の外部に通信する。いずれにしても、ＡＩプログラム２１０の実行状態は、監視を可能にするために利用可能にされる。
【００３９】
一実施形態では、実行状態１７０は、ＡＩプログラム２１０の内部の状態／値、ＡＩプログラム２１０の出力として提供される予測値、言及された値の統計的傾向、ＡＩプログラムへ２１０の入力、ＡＩプログラム２１０の学習された理解を表す内部データ構造の特徴、または、ＡＩプログラム２１０の現在の状態を示すデータを含む。たとえば、実行状態１７０は、実際の実行状態に関連して定義されたポリシー、および／または、指標（メトリクス）などの追加情報を含むことができる。ひとつアプローチでは、追加情報は、実行状態について定義された許容範囲外の値、潜在的な不利な動作状態を示す重要な変化（たとえば、特定の大きさよりも大きい変化または特定の特徴の変化）を識別することに関連付けられた指標、定義された範囲／傾向とは逆の特定の方向に一貫して傾向を示す値を識別することに関連付けられた指標、不利な状態と相関することが知られている値を識別することに関連付けられた指標、などを定義する。一実施形態では、実行状態の不利な動作条件を指定する言及された情報は、キルスイッチ閾値と呼ばれる。
【００４０】
したがって、一実施形態では、実行モジュール１３０は、制御バイナリ１６０をＡＩプログラム２１０に注入するように機能する命令を含む。図２に関して前述したように、制御バイナリ１６０は、制御バイナリ１６０をＡＩプログラム２１０の一部として統合する方法（たとえば、ランダム化された位置）で、ＡＩプログラム２１０のバイナリコードと統合される。したがって、ひとつのアプローチでは、実行モジュール１３０は、制御バイナリ１６０をＡＩプログラム２１０に追加することにより、制御バイナリ１６０をＡＩプログラム２１０に注入し、制御バイナリ１６０をＡＩプログラム２１０の一部として統合する。さらなる態様では、実行モジュール１３０は、制御バイナリ１６０を統合するために、ＡＩプログラム２１０のひとつ以上の態様を変更する。たとえば、実行モジュール１３０は、格納された命令の順序、および／または、制御バイナリ１６０の統合を考慮して調整を必要とする他の態様に関連する静的メモリ値に関連付けられた値を調整してもよい。いずれの場合も、実行モジュール１３０は、通常、最初に実行されるＡＩプログラム２１０を構成するための準備ステップとして、制御バイナリ１６０を注入するように機能する。これにより、制御バイナリ１６０は、ＡＩプログラム２１０を実装するシステム内にロードされるための前提条件として、ＡＩプログラム２１０内に含まれる。もちろん、ＡＩプログラム２１０の予備的修正として説明されているが、さらなる態様では、監視制御システム１００は、制御バイナリ１６０を含むように既存のシステムを適合させるように機能する。
【００４１】
別の実施形態では、実行モジュール１３０は、制御バイナリ１６０をＡＩプログラム２１０に動的に注入するように機能する。すなわち、実行モジュール１３０は、ＡＩプログラム２１０のプログラムフローを中断し、ＡＩプログラム２１０に代えて制御バイナリ１６０を実行させる。このように、制御バイナリ１６０を動的に注入する場合、実行モジュール１３０は、ウォッチドッグモジュール１４０がＡＩプログラム２１０の実行状態のなかで不利な動作条件を特定（識別）することに応答して、ウォッチドッグモジュール１４０の制御で機能する。実行モジュール１３０は、実行される次の命令を、制御バイナリ１６０がＡＩプログラム２１０から制御を引き継ぎ、制御バイナリ１６０のものになるように、ＡＩプログラム２１０のプログラムフローを操作する。実行モジュール１３０は、一実施形態では、プログラムカウンタ、または、他の制御フローデータ引数に関連付けられたメモリロケーションを変更することにより、制御フローを操作する。したがって、実行モジュール１３０は、実行を制御バイナリ１６０にリダイレクト（変更）することによって、ＡＩプログラム２１０の実行を効果的に停止することができる。
【００４２】
このように、ウォッチドッグモジュール１４０は、一実施形態では、ＡＩプログラム２１０の実行を監視するように機能する命令を含む。一般に、ウォッチドッグモジュール１４０は、不利な動作条件を示す状態について、ＡＩプログラム２１０の言及された実行状態１７０を監視する。前述したように、不利な動作条件は、不利な結果をもたらす可能性のあるＡＩプログラム２１０の内部状態の組み合わせにしたがって定義される。ウォッチドッグモジュール１４０は、制御バイナリ１６０から実行状態１７０の指標（インジケータ）を受信する。たとえば、一実施形態では、ウォッチドッグモジュール１４０は、ＡＰＩ、制御バイナリ１６０自体、または他の適切な手段を介して、実行状態（たとえば、内部値、入力、出力、メモリアドレスなど）にアクセスする。一実施形態では、ＡＩプログラム２１０の実行状態１７０は、ＡＩプログラム２１０の実行にともなって変化する変数の値、データ構造（たとえば、ノード）の内部構成、および、関連する格納データ（たとえば、ノードの重み、潜在空間の特性、パラメータ化など）を示す。このように、一実施形態では、ウォッチドッグモジュール１４０は、入力値、出力値、学習された理解を表す内部で導出、および、格納された値などの組み合わせについて実行状態を監視する。
【００４３】
監視された実行状態を形成する値は、特定の実施形態に応じて変化してもよいが、一般に、不利な動作条件を含む現在の状態を示すＡＩプログラム２１０の実行に関連する値の任意の組み合わせを含むことを理解されたい。不利な動作条件および不利な動作条件につながる実行状態は、異なるアプローチを用いて監視するための値を定義するために、予め特定されたものでもよい。たとえば、不利な動作条件は、機能安全基準、望ましくない既知の出力値、予測される組み合わせなどにしたがって定義してもよい。さらに、不利な動作条件は、回帰を実行し、不利な動作条件につながる特定の実行状態を決定するために使用されてもよい。ひとつのアプローチでは、システム１００は、故障ツリー分析、制御フロー図の分析、または、他の適切なアプローチにしたがって、不利な動作条件および関連する実行状態を決定する。いずれのアプローチ、または、アプローチの組み合わせを採用しても、監視制御システム１００は、監視を容易にするために、実行状態が定義された指標を格納する。
【００４４】
したがって、ウォッチドッグモジュール１４０は、一実施形態では、取得した実行状態をキルスイッチ閾値と比較して、不利な動作状態が発生しているか否か、または、発生する可能性があるか否かを判断する。実行状態は、ひとつ以上の発生において、進行中の不利な動作状態、または、差し迫った、あるいは、発生する可能性があると特徴付けられる動作状態を示す可能性があることに留意されたい。ウォッチドッグモジュール１４０が制御バイナリ１６０を作動させることを決定したときに、特定の不利な動作状態はまだ発生していないかもしれないが、そのような不利な動作状態の差し迫った性質、および／または、不利な動作状態を識別する情報の性質は、特定の不利な動作状態が実際に発生するまで待つことには適さない。いずれの場合でも、ウォッチドッグモジュール１４０は、制御バイナリ１６０、または、ウォッチドッグモジュール１４０に情報を提供する他の関連メカニズム（たとえば、制御バイナリ１６０を介して提供されるメモリアクセス）を介して、ＡＩプログラム２１０の実行状態を形成する値にアクセスする。
【００４５】
次に、ウォッチドッグモジュール１４０は、たとえば、各実行サイクルで実行状態を形成する値を、定義された実行状態１７０、および／または、実行状態の範囲を定義する指標（メトリクス）と比較する。すなわち、一態様では、ウォッチドッグモジュール１４０は、また、少なくとも計装プログラムからの値を、値の可能な範囲のマップと比較して、値が不利な動作条件と相関するか否かを決定する。すなわち、ウォッチドッグモジュール１４０、および／または、実行モジュール１３０は、たとえば、記録された値の履歴に基づいて、異なる実行状態に対する値の範囲を決定する。この履歴を用いて、ウォッチドッグモジュール１４０は、値を分析し、値が範囲内にあるか否かを決定する。ウォッチドッグモジュール１４０は、一般に、監視制御システム１００内からＡＩプログラム２１０の監視を実行するものとして説明されるが、一実施形態では、ウォッチドッグモジュール１４０またはその一部は、ＡＩプログラム２１０内の制御バイナリ１６０と統合される。このように、ウォッチドッグモジュール１４０は、一実施形態では、ＡＩプログラム２１０のシステム内でＡＩプログラム２１０をローカルに監視する。いずれの場合も、ＡＩプログラム２１０を監視することに加えて、ウォッチドッグモジュール１４０は、また、方法３００で後に詳細に説明するように、制御バイナリ１６０を作動させて、ＡＩプログラム２１０の実行を停止する。
【００４６】
図３は、人工知能（ＡＩ）プログラムの実行を管理する方法３００を示す。方法３００は、図１の監視制御システム１００の観点から説明される。方法３００は、監視制御システム１００と組み合わせて説明されるが、方法３００は、監視制御システム１００内で実施されることに限定されず、代わりに、方法３００を実施することができるシステムの一例であることを理解されたい。
【００４７】
３１０において、実行モジュール１３０は、制御バイナリ１６０をＡＩプログラム２１０に注入する。一実施形態では、実行モジュール１３０は、ＡＩプログラム２１０を実行する組み込みデバイスのファームウェアに制御バイナリ１６０を注入する。たとえば、実行モジュール１３０は、ファームウェアにアクセスし、制御バイナリ１６０がＡＩプログラム２１０と統合され、制御バイナリ１６０によるＡＩプログラム２１０の態様へのアクセスを提供するように、制御バイナリ１６０をＡＩプログラム２１０のコードのなかに格納する。言及された方法で制御バイナリ１６０を注入するひとつの特徴は、制御バイナリ１６０がＡＩプログラム２１０と統合されているために、制御バイナリ１６０の命令に帰属するセキュリティ特権を提供することである。すなわち、システム、ＡＩプログラム２１０自体、または、他の方法で提供されるような監視プロセスは、制御バイナリ１６０がファームウェアに統合されているので、制御バイナリ１６０をネイティブプロセスとして見ることができる。その結果、言及された方法で制御バイナリ１６０を注入することにより、外部プロセスがメモリ、データ構造、および、ＡＩプログラム２１０に関連する他の態様と相互作用することを妨げる可能性のあるセキュリティメカニズムを回避することができる。
【００４８】
さらに、ＡＩプログラム２１０、および、注入されたときの制御バイナリ１６０を格納するメモリ／ファームウェアは、一実施形態では、ＡＩプログラム２１０を実行するための電子制御装置（ＥＣＵ）、または、他の処理装置と統合される。ファームウェア、および、実行デバイスの特定の構成は、様々な実施形態に応じて変化する可能性があることを理解されたい。ただし、様々な構成には、車両内のＥＣＵおよび関連する組み込みメモリなどを含むことができる。
【００４９】
３２０において、ウォッチドッグモジュール１４０は、ＡＩプログラム２１０を監視して、ＡＩプログラム２１０内の実行状態を特定（識別）する。一実施形態では、ウォッチドッグモジュール１４０は、入力、中間／内部値、出力値（たとえば、ひとつ以上のセンサ入力を処理するＡＩプログラム２１０から生じる、ＡＩプログラム２１０によって生成される制御出力である予測値）、学習された知覚特性を格納する内部データ構造などを監視する。前述したように、ウォッチドッグモジュール１４０は、値に対する定義された可能な範囲、不利な動作条件に対応する予め特定された組み合わせなどにしたがって、言及された値を監視してもよい。
【００５０】
ウォッチドッグモジュール１４０は、たとえば、プログラムのテスト、検証された実行中のプログラムの追跡、ＡＩプログラム２１０の静的分析などを通じて、様々な実行状態に対する期待値／可能値の範囲を定義する。ひとつのアプローチでは、ウォッチドッグモジュール１４０は、監視により収集された観測値の履歴にわたって範囲／条件を生成する。いずれの場合も、ウォッチドッグモジュール１４０は、３２０において、ＡＩプログラム２１０へのアクセスを通じて、ＡＩプログラム２１０の現在の実行状態を定義する現在の値を取得する。すなわち、ひとつのアプローチでは、ウォッチドッグモジュール１４０は、現在の実行状態を定義する値を収集するために、メモリロケーション、実行スレッド、レジスタ、および／または、ＡＩプログラム２１０に関する他の情報源を検査する。値を取得するためにどのアプローチがとられても、制御バイナリ１６０は、一般に、ＡＩプログラム２１０の他の保護された／安全な態様へのアクセスを容易にする。さらに、ウォッチドッグモジュール１４０は、実行状態がキルスイッチ閾値を満たすか否かを決定するためのさらなる分析のために、リモートデバイスで実行状態を受信する。
【００５１】
３３０において、ウォッチドッグモジュール１４０は、３２０で特定された実行状態がキルスイッチ閾値を満たすか否かを判定する。一実施形態では、キルスイッチ閾値は、ウォッチドッグモジュール１４０が制御バイナリ１６０を起動（トリガ）する実行状態の値の組み合わせである。たとえば、キルスイッチ閾値は、不利な動作条件を示す実行条件の値を定義する。したがって、キルスイッチ閾値は、ＡＩプログラム２１０をいつ停止すべきかを決定するための定量的な指標を提供する。一実施形態では、キルスイッチ閾値は、標準動作範囲、または、示された機能標準（たとえば、ＩＳＯ２６２６２）に違反するＡＩプログラム２１０の動作にしたがって、不利な動作条件を定義する。
【００５２】
したがって、ウォッチドッグモジュール１４０は、キルスイッチ閾値と３３０で特定された実行状態とを比較して、実行状態がキルスイッチ閾値を満たし、これにより不利な動作状態を示しているか否かを判定する。ウォッチドッグモジュール１４０が、実行状態が閾値を満たす（たとえば、定義された範囲外、規定値よりも大きい、特定のマージンよりも小さい、定義された相関に等しいなど）と判定した場合、ウォッチドッグモジュール１４０は、３４０で制御バイナリ１６０を作動させる。そうでなければ、ウォッチドッグモジュール１４０は、ＡＩプログラム２１０の実行中に、更新された実行状態を繰り返し取得し、その状態を継続的にチェックする。ウォッチドッグモジュール１４０がＡＩプログラム２１０を監視する頻度は、実施形態によって異なり得る。しかしながら、一般原則として、ウォッチドッグモジュール１４０は、不利な動作条件をもたらす可能性のあるＡＩプログラム２１０内の進展を捕捉するために、更新された実行状態を半連続的に取得し、十分な頻度で実行状態をチェックする。ウォッチドッグモジュール１４０は、ＡＩプログラム２１０が実行されているプロセッサ／制御装置のクロック周波数に匹敵する周波数でＡＩプログラム２１０をチェックすることができる。
【００５３】
３４０において、ウォッチドッグモジュール１４０は、ＡＩプログラム２１０の実行を停止させるために、制御バイナリ１６０を作動させる。一実施形態では、ウォッチドッグモジュール１４０は、実行の停止を開始するために、リモートデバイスから制御バイナリ１６０に制御信号を送信する。次に、制御バイナリ１６０は、たとえば、ＡＩプログラム２１０の実行を停止させる停止機能を実行する。ひとつのアプローチでは、停止機能は、ＡＩプログラム２１０の実行を中断し、代わりに、たとえばフェイルオーバ機能を実行するように、ＡＩプログラム２１０のプログラムフローを操作する。別の構成では、制御バイナリ１６０は、ＡＩプログラム２１０が実行されている関連デバイス、または、少なくとも処理装置をリセットする。さらに別の実施形態では、制御バイナリ１６０は、不利な動作状態につながる実行状態をクリアし、その後の動作でそのような実行状態を回避するために、ＡＩプログラム２１０の内部状態、メモリロケーション、および／または、他の態様をリセットする。
【００５４】
前述したように、制御バイナリ１６０の作動は、フェイルオーバ機能の実行をさらに含むことができる。フェイルオーバ機能は、通常、ＡＩプログラム２１０のリセット／停止からの回復をともなう関連デバイスを容易にする機能を含む。したがって、ＡＩプログラム２１０が、先進運転支援システム（ＡＤＡＳ）、自律運転システム、または、車両の動作に影響を及ぼす可能性がある他の車両システムへの機能提供に関与する場合、制御バイナリ１６０によって実行されるフェイルオーバ機能は、車両の動作中にＡＩプログラム２１０が予期せずリセットされた場合に、車両の安全な運転を継続して提供することができる。たとえば、フェイルオーバ機能は、ドライバに簡単な警告を提供することから、道路の側方に安全に引き寄せるなどの安全操作を行うように車両を制御することまでの範囲に及ぶ。このように、監視制御システムは、ＡＩプログラム２１０の不利な動作条件を回避するだけでなく、その後の車両の安全な運転も考慮する。
【００５５】
図４は、制御バイナリをＡＩプログラムに動的に注入する方法４００を示している。方法４００は、図１の監視制御システム１００の観点から説明される。方法４００は、監視制御システム１００と組み合わせて説明されるが、方法４００は、監視制御システム１００内で実施されることに限定されず、代わりに、方法４００を実施し得るシステムの一例であることを理解されたい。
【００５６】
方法４００は、一般に、方法３００と類似しており、したがって、共有される態様の詳細な説明は再検討されない。しかしながら、一般的な文脈として、方法４００は、異なる方法で制御バイナリ１６０を活用することにより、方法３００の代替手段を提供すると考える。たとえば、実行モジュール１３０は、最初に制御バイナリ１６０をＡＩプログラム２１０に注入せず、代わりに、悪意のある攻撃がプログラム制御フローをリダイレクト（変更）するのと同様の方法で制御バイナリ１６０を利用する。
【００５７】
図４に示されるように、ウォッチドッグモジュール１４０は、実行状態を監視し、実行状態がキルスイッチ閾値を満たすときを決定する。もちろん、制御バイナリ１６０はまだＡＩプログラム２１０に注入されていないため、ウォッチドッグモジュール１４０は、一般に、現在の実行状態を取得するために他のメカニズムを利用する。制御バイナリ１６０は、方法４００のこの時点でＡＩプログラム２１０に埋め込まれておらず、ウォッチドッグモジュール１４０は、他の利用可能なメカニズムを介してＡＩプログラム２１０を監視する。実行状態を取得するための代替的なアプローチは、入力と出力の傍受、電力消費の監視、電磁放射の監視、メモリアクセスの監視、プロセッサスレッドの監視、レジスタの監視などを含み得る。いずれにせよ、ウォッチドッグモジュール１４０に利用可能な情報は、方法４００によって提供されるアプローチのように包括的ではないかもしれないが、一般的には、ＡＩプログラム２１０を管理するのに十分な情報を取得する。
【００５８】
キルスイッチ閾値が満たされていると判断して制御バイナリ１６０を作動させる代わりに、実行モジュール１３０は、方法４００の下で動作し、４１０において、制御バイナリ１６０をＡＩプログラム２１０に注入する。一実施形態では、実行モジュール１３０は、ＡＩプログラムのプログラム制御フローを動的に変更し、それによって実行を制御バイナリ１６０の命令にリダイレクトするために、ひとつ以上のメモリロケーションを操作する。このように、制御バイナリ１６０は、実行モジュール１３０によって提供される操作を介した別個の制御フロー経路を表す。いずれの場合も、ＡＩプログラム制御フローが４１０で調整されると、制御バイナリ１６０は３４０で作動され、前述したように実行される。したがって、方法４００は、たとえば、前提条件として制御バイナリ１６０をＡＩプログラム２１０に埋め込むことができないか、そうでなければ、ＡＩプログラム２１０に埋め込まれていない場合に、一般的に、ＡＩプログラム２１０の実行を停止する代替手段を表す。
【００５９】
さらに、図１の監視制御システム１００は、別個の集積回路、および／または、チップを用いて様々な構成によって構成できることが理解されるべきである。そのような実施形態では、実行モジュール１３０は、別個の集積回路として具現化される。さらに、ウォッチドッグモジュール１４０は、個々の集積回路上で具現化される。回路は接続パスを介して接続され、個別の回路間で信号を通信する。もちろん、別個の集積回路が論じられているが、様々な実施形態では、回路は、共通の集積回路基板に統合されてもよい。さらに、集積回路は、より少ない集積回路に組み合わせるか、またはより多くの集積回路に割することができる。別の実施形態では、モジュール１３０および１４０は、別個の特定用途向け集積回路に組み合わされてもよい。さらなる実施形態では、モジュール１３０および１４０に関連する機能の一部は、プロセッサ１１０によって実行可能であり、非一時的メモリに格納されるファームウェアとして具現化されてもよい。さらなる実施形態では、モジュール１３０、１４０は、プロセッサ１１０のハードウェアコンポーネントとして統合される。
【００６０】
別の実施形態では、説明された方法、および／または、それらの等価物は、コンピュータ実行可能命令で実装されてもよい。したがって、一実施形態では、非一時的なコンピュータ可読媒体は、格納されたコンピュータ実行可能命令とともに構成されている。格納されたコンピュータ実行可能命令は、機械（たとえば、プロセッサ、コンピュータなど）によって実行されると、機械、および／または、関連するコンポーネントに方法を実行させる。
【００６１】
説明を簡単にするために、図に示されている方法論は一連のブロックとして示され説明されているが、いくつかのブロックは異なる順序で実行されることがあり、および／または、図示および説明から他のブロックと同時に実行されることがあり、方法論はブロックの順序によって制限されないことが理解されるべきである。さらに、例示されたブロックのすべてが、例示的な方法論を実装するために使用されてもよい。ブロックは、複数のコポーネントに結合、または、分離されることがある。さらに、追加の、および／または、代替の方法論は、図示されていない追加のブロックを使用することができる。
【００６２】
監視制御システム１００は、ひとつ以上のプロセッサ１１０を含むことができる。ひとつ以上の構成では、プロセッサ１１０は、監視制御システム１００のメインプロセッサであり得る。たとえば、プロセッサ１１０は、電子制御装置（ＥＣＵ）であり得る。監視制御システム１００は、ひとつ以上のタイプのデータを格納するためのひとつ以上のデータストアを含むことができる。データストアは、揮発性、および／または、不揮発性メモリを含むことができる。適切なデータストアの例には、ＲＡＭ（ランダムアクセスメモリ）、フラッシュメモリ、ＲＯＭ（リードオンリーメモリ）、ＰＲＯＭ（プログラマブルリードオンリーメモリ）、ＥＰＲＯＭ（消去可能プログラマブルリードオンリーメモリ）、ＥＥＰＲＯＭ（電気的消去可能プログラマブルリードオンリーメモリ）、レジスタ、磁気ディスク、光ディスク、ハードドライブ、分散メモリ、クラウドベースのメモリ、開示されたデータを格納するのに適した他の記憶媒体、またはそれらの任意の組み合わせが含まれる。データストアは、プロセッサ１１０のコンポーネントとすることができ、またはデータストアは、使用のためプロセッサ１１０に動作可能に接続することができる。この説明全体を通して使用される「動作可能に接続された」という用語は、直接的な物理的接触のない接続を含む、直接または間接の接続を含みえる。
【００６３】
この明細書では詳細な実施形態が開示されている。しかしながら、開示された実施形態は、例としてのみ意図されていることが理解されるべきである。したがって、この明細書に開示される特定の構造的および機能的詳細は、限定事項として解釈されるべきではなく単に請求項の基礎として、および、実質的に任意の適切な詳細な構造でこの明細書の態様をさまざまに使用することを当業者に教示するための代表的な基礎としてのみ解釈されるべきである。さらに、この明細書で使用される用語および語句は、限定することを意図するものではなく、可能な実装の理解可能な説明を提供することを意図している。種々の実施形態が図１〜図４に示されているが、実施形態は、図示された構造または用途に限定されない。
【００６４】
図中のフローチャート、および、ブロック図は、様々な実施形態による、システム、方法、および、コンピュータプログラム製品の可能な実装のアーキテクチャ、機能、および、動作を示している。これに関して、フローチャート、または、ブロック図の各ブロックは、指定された論理機能を実装するためのひとつ以上の実行可能な命令を含むコードのモジュール、セグメント、または、部分を表すことができる。また、一部の代替実装では、ブロックに記載されている機能が、図に記載されている順序とは異なる順序で発生する場があることにも注意されるべきである。たとえば、連続して示されたふたつのブロックは、実際には実質的に同時実行されてもよいし、関係する機能に応じて、ブロックが逆の順序で実行されることもある。
【００６５】
上記のシステム、コンポーネント、および／または、プロセスは、ハードウェア、または、ハードウェアとソフトウェアの組み合わせで実現でき、ひとつの処理システムで集中方式によって、または、複数の相互接続された処理システムに異なる要素が分散している分散方式によって実現することができる。この明細書に記載の方法を実行するように適合されたあらゆる種類の処理システム、または、別の装置が適している。ハードウェアとソフトウェアの組み合わせは、コンピュータで使用可能なプログラムコードを備えた処理システムであり、読み込まれて実行されると、ここで説明する方法を実行するように処理システムを制御する。システム、コンポーネント、および／または、処理は、たとえば、機械によって読み取り可能であって、ここに記述された処理、および、方法を実行するために機械によって実行可能な指令のプログラムに実体的に実装された、コンピュータプログラム製品の記憶装置、または、他のデータプログラムの記憶装置として、コンピュータによって読み取り可能な記憶装置に埋め込むことができる。これらの要素は、この明細書に記載の方法の実施を可能にし、処理システムにロードされたときにこれらの方法を実行できるすべての機能を含むアプリケーション製品に組み込むこともできる。
【００６６】
さらに、この明細書で説明された構成は、たとえば記憶されるなどして、実施されるコンピュータ可読プログラムコードを有するひとつ以上のコンピュータ可読媒体に具現化されるコンピュータプログラム製品の形をとることができる。ひとつ以上のコンピュータ可読媒体の任意の組み合わせが利用されてもよい。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であり得る。「コンピュータ可読記憶媒体」という語句は、非一時的な記憶媒体を意味する。コンピュータ可読媒体は、限定されるものではないが、不揮発性媒体および揮発性媒体を含む、形態をとってもよい。不揮発性媒体には、たとえば、光ディスク、磁気ディスクなどが含まれる。揮発性媒体には、たとえば、半導体メモリ、ダイナミックメモリなどが含まれる。そのようなコンピュータ可読媒体の限定的ではない例には、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、および、その他の磁気媒体、または、ＡＳＩＣ、または、グラフィックス処理装置（ＧＰＵ）、または、ＣＤ、および、その他の光学媒体、または、ＲＡＭ、または、ＲＯＭ、または、メモリチップ、または、メモリカード、または、メモリスティック、または、他の媒体を含むことができ、これらは、コンピュータ、プロセッ、または、他の電子デバイスが読み取り可能である。この明細書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによって、またはそれに関連して使用するためのプログラムを含むか、または、記憶することができる任意の有形の媒体であり得る。
【００６７】
以下の説明は、この明細書で使用される選択された用語の定義を含んでいる。定義には、用語の範囲に含まれ、さまざまな実装に使用できるコンポーネントのさまざまな例や形式が含まれている。例は、制限することを意図したものではない。用語の単数形と複数形の両方が定義内にある場合がある。
【００６８】
「ひとつの実施形態」、「一実施形態」、「ひとつの例」、「一例」などへの言及は、そのように説明された実施形態、または、例が、特定の特徴、構造、特性、内部特性、要素、または、制限を含み得ることを示すが、それらの実施形態、または、例が、必須のものとして、特定の特徴、構造、特性、内部特性、要素、または、制限を含むことを示すものではない。さらに、「一実施形態では」という語句の繰り返しの使用は、同じ実施形態を指す場合があるが、必ずしもそうであるとは限らない。
【００６９】
この明細書で使用される「モジュール」は、コンピュータ、または、電気ハードウェアコンポーネント、ファームウェア、命令を格納する非遷移的なコンピュータ可読媒体、および／または、これらのコンポーネントの組み合わせを含み、これらは、機能、または、アクションを実行するか、および／または、別のロジック、方法、および／または、システムに、機能、または、アクションを発揮させるように構成されている。モジュールは、アルゴリズムによって制御されるマイクロプロセッサ、多数の電気素子を含む論理回路（たとえば、ＡＳＩＣ）、アナログ回路、デジタル回路、プログラムされた論理デバイス、実行時にアルゴリズムを実行する命令を含むメモリデバイスなどを含むことができる。モジュールは、ひとつ以上の実施形態では、ひとつ以上のＣＭＯＳゲート、ゲートの組み合わせ、または他の回路構成要素を含む。複数のモジュールが説明される場合、ひとつ以上の実施形態は、複数のモジュールをひとつの物理モジュール構成要素に組み込むことを含む。同様に、単一のモジュールが説明される場合、ひとつ以上の実施形態は、複数の物理的構成要素に、単一のモジュールを分配することを含む。
【００７０】
さらに、この明細書で使用されるモジュールには、タスクを実行したりデータ型を実装したりするルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。さらなる態様では、メモリは一般に、言及されたモジュールを格納する。モジュールに関連付けられたメモリは、プロセッサ、ＲＡＭ、ＲＯＭ、フラッシュメモリ、または、別の適切な電子記憶媒体内に埋め込まれたバッファ、または、キャッシュである場合ある。さらに別の態様では、この開示によって想定されるモジュールは、特定用途向け集積回路（ＡＳＩＣ）、システムオンチップ（ＳｏＣ）のハードウェアコンポーネント、プログラマブルロジックアレイ（ＰＬＡ）、グラフィックス処理装置（ＧＰＵ）、または開示された機能を実行するための定義された構成セット（たとえば、命令）が組み込まれた別の適切なハードウェアコンポーネントとして実装される。
【００７１】
ひとつ以上の構成では、この明細書で説明されるひとつ以上のモジュールは、人工知能要素、または、計算知能要素、たとえば、ニューラルネットワーク、ファジーロジック、または、他の機械学習アルゴリズムを含むことができる。さらに、ひとつ以上の構成では、ひとつ以上のモジュールを、この明細書で説明する複数のモジュール間で分散させることできる。ひとつ以上の構成では、この明細書で説明されているふたつ以上のモジュールを組み合わせて単一のモジュールにすることができる。
【００７２】
コンピュータ可読媒体上で実施されるプログラムコードは、無線、有線、光ファイバ、ケーブル、ＲＦなど、または、前述要素の任意の適切な組み合わせを含むがこれらに限定されない任意の適切な媒体を使用して送信することができる。この構成の態様の動作を実行するためのコンピュータプログラムコードは、Ｊａｖａ（登録商標）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、Ｃプログラミング言語、同様のプログラミング言語などを含む従来の手続き型プログラミング言語を含むひとつ以上のプログラミング言語の任意の組み合わせで書くことができる。プログラムコードは、完全にユーザのコンピュータにおいて、一部はユーザのコンピュータにおいて、スタンドアロンソフトウェアパッケージとして、一部はユーザのコンピュータにおいて、残る一部はリモートコンピュータにおいて、または、完全にリモートコンピュータ、または、サーバーで実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または接続は、外部コンピュータ（たとえば、インターネットサービスプロバイダを使用してインターネットを介して）に接続されてもよい。
【００７３】
この明細書で使用される要素の数は、ひとつ、または、ふたつ以上として定義される。この明細書で使用される「複数」という用語は、ふたつ、または、ふたつ以上として定義される。この明細書で使用される「別の」という用語は、少なくとも第２、または、それ以上として定義される。この明細書で使用される「含む」、および／または、「有する」という用語は、「備える」を意味し、すなわち、他の要素の存在を許容する用語として定義される。「・・・と・・・との少なくともひとつ」という表現は、関連付けて列挙された項目のひとつ、または、複数のありとあらゆる可能な組み合わせを指し、それらを包含するものとして解釈されるべきである。一例として、「Ａ、Ｂ、および、Ｃのうちの少なくともひとつ」という語句は、Ａのみ、Ｂのみ、Ｃのみ、またはそれらの任意の組み合わせ（たとえば、ＡＢ、ＡＣ、ＢＣ、または、ＡＢＣ）を含む。
【００７４】
この明細書の態様は、その精神、または、本質的な属性から逸脱することなく、他の形態で具体化することができる。したがって、この明細書の範囲を示すために、前述の明細書ではなく、以下の特許請求の範囲を参照する必要がある。
【図１】
2021533486.tif 000003
【図２】
2021533486.tif 000004
【図３】
2021533486.tif 000005
【図４】
2021533486.tif 000006
【国際調査報告】
2021533486.tif 000007