(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-06-17
(45)【発行日】2025-06-25
(54)【発明の名称】論理ニューラルネットワークによるアクションプルーニング
(51)【国際特許分類】
G06N 3/092 20230101AFI20250618BHJP
G06N 3/042 20230101ALI20250618BHJP
【FI】
G06N3/092
G06N3/042
(21)【出願番号】P 2023531653
(86)(22)【出願日】2021-10-22
(86)【国際出願番号】 CN2021125501
(87)【国際公開番号】W WO2022111161
(87)【国際公開日】2022-06-02
【審査請求日】2024-03-19
(32)【優先日】2020-11-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】木村 大毅
(72)【発明者】
【氏名】和地 瞭良
(72)【発明者】
【氏名】チョウドリー、スバジット
(72)【発明者】
【氏名】小比田 涼介
(72)【発明者】
【氏名】ムナワー、アシム
(72)【発明者】
【氏名】立堀 道昭
【審査官】多賀 実
(56)【参考文献】
【文献】特開2020-034994(JP,A)
【文献】特開2016-196079(JP,A)
【文献】Ryan Riegel et al.,"Logical Neural Networks",arXiv.org [online],arXiv:2006.13155v1,米国,Cornell University,2020年06月,pp.1-10,[検索日 2025.01.09], インターネット:<URL: https://arxiv.org/abs/2006.13155v1>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
強化学習におけるアクションプルーニングのためのコンピュータ実装方法であって、
環境の現在の状態を受信することと、
論理ニューラルネットワーク(LNN)構造を用いて、環境の前記現在の状態に基づいた論理的推論を評価することと、
前記論理的推論の評価に応じて、前記環境中のエージェントの可能なアクションのセットから各アクションの上限および下限を出力することと、
前記環境における前記エージェントの可能なアクションと前記環境の前記現在の状態との各ペアについて、前記上限および前記下限を用いることによって確率を計算することであって、計算された確率の各々は、前記各アクションのそれぞれの優先度を示す、計算することと、
前記計算された確率を用いることによって、前記環境の前記現在の状態に対する強化学習におけるポリシーを取得することと、
アクションの前記セットから1または複数のアクションを、前記1または複数のアクションが無視されるように前記ポリシーに違反するものとしてプルーニングすることと、
を含む、コンピュータ実装方法。
【請求項2】
前記環境における前記エージェントの前記可能なアクションと前記環境の前記現在の状態との前記各ペアは、人間によって定義される、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記環境における前記エージェントの前記可能なアクションと前記環境の前記現在の状態との前記各ペアは、入力された状態とアクションのペアから訓練される、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記確率は、前記上限および前記下限を用いることによってさらに論理ルール矛盾値を用いることによって計算され、前記論理ルール矛盾値の各々は、前記LNNに関連する複数の論理ルールの各々に対する矛盾のレベルを表す、請求項1に記載のコンピュータ実装方法。
【請求項5】
矛盾は、上限値よりも高い下限値を有することを含む、請求項4に記載のコンピュータ実装方法。
【請求項6】
前記ポリシーに応答して前記環境中の探索を実行する、請求項1に記載のコンピュータ実装方法。
【請求項7】
連続的な真理値は、前記連続的な真理値がαより大きい場合に真とみなされ、前記連続的な真理値が1-αより小さい場合に偽とみなされるように、真の閾値1/2<α<1を用いて境界解釈可能性を補助することをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
1または複数のハードウェア処理装置を、複数のニューロンおよび結合エッジを有する前記LNN構造として構成することであって、前記LNN構造の前記複数のニューロンおよび結合エッジは論理式のシステムと1対1で対応し、前記
論理的推論を行う方法を実行する、構成すること、
をさらに含み、
前記複数のニューロンのうちの少なくとも1つのニューロンは、論理式の前記システムの各式における対応する論理的結合に関係し、前記少なくとも1つのニューロンは、前記対応する論理的結合のオペランドを含む入力情報および前記対応する論理的結合の真理関数を実装するように構成されたパラメータをさらに含む情報を提供する1または複数のリンク結合エッジを有しており、前記少なくとも1つのニューロンの各々は、計算を提供するための対応する活性化関数を有し、活性化関数の計算は、システム式の式に関する上限および下限を示す値のペアを返す、または前記システム式の前記式の命題の真理値を返す、
請求項1に記載のコンピュータ実装方法。
【請求項9】
前記複数のニューロンのうちの少なくとも1つの他のニューロンは前記命題に関係し、前記少なくとも1つの他のニューロンは、前記対応する命題の真理値に関する上限および下限を証明する情報および最もタイトな限界を集約するように構成されたパラメータをさらに含む情報を提供する数式に対応する1または複数のリンク結合エッジを有する、請求項8に記載のコンピュータ実装方法。
【請求項10】
強化学習におけるアクションプルーニングのための
コンピュータプログラムであって、前記
コンピュータプログラムは、
プログラム命令を含み、前記プログラム命令は、コンピュータによって実行可能であり、前記コンピュータに、方法を実行させ、前記方法は、
環境の現在の状態を受信することと、
論理ニューラルネットワーク(LNN)構造を用いて、環境の前記現在の状態に基づいた論理的推論を評価することと、
前記論理的推論の評価に応じて、前記環境中のエージェントの可能なアクションのセットから各アクションの上限および下限を出力することと、
前記環境における前記エージェントの可能なアクションと前記環境の前記現在の状態との各ペアについて、前記上限および前記下限を用いることによって確率を計算することであって、計算された確率の各々は、前記各アクションのそれぞれの優先度を示す、計算することと、
前記計算された確率を用いることによって、前記環境の前記現在の状態に対する強化学習におけるポリシーを取得することと、
アクションの前記セットから1または複数のアクションを、前記1または複数のアクションが無視されるように前記ポリシーに違反するものとしてプルーニングすることと、
を含む、
コンピュータプログラム。
【請求項11】
前記環境における前記エージェントの前記可能なアクションと前記環境の前記現在の状態との前記各ペアは、人間によって定義される、請求項10に記載の
コンピュータプログラム。
【請求項12】
前記環境における前記エージェントの前記可能なアクションと前記環境の前記現在の状態との前記各ペアは、入力された状態とアクションのペアから訓練される、請求項10に記載の
コンピュータプログラム。
【請求項13】
前記確率は、前記上限および前記下限を用いることによってさらに論理ルール矛盾値を用いることによって計算され、前記論理ルール矛盾値の各々は、前記LNNに関連する複数の論理ルールの各々に対する矛盾のレベルを表す、請求項10に記載の
コンピュータプログラム。
【請求項14】
矛盾は、上限値よりも高い下限値を有することを含む、請求項13に記載の
コンピュータプログラム。
【請求項15】
前記ポリシーに応答して前記環境中の探索を実行する、請求項10に記載の
コンピュータプログラム。
【請求項16】
連続的な真理値は、前記連続的な真理値がαより大きい場合に真とみなされ、前記連続的な真理値が1-αより小さい場合に偽とみなされるように、真の閾値1/2<α<1を用いて境界解釈可能性を補助することをさらに含む、請求項10に記載の
コンピュータプログラム。
【請求項17】
1または複数のハードウェア処理装置を、複数のニューロンおよび結合エッジを有する前記LNN構造として構成することであって、前記LNN構造の前記複数のニューロンおよび結合エッジは論理式のシステムと1対1で対応し、前記
論理的推論を行う方法を実行する、構成すること、
をさらに含み、
前記複数のニューロンのうちの少なくとも1つのニューロンは、論理式の前記システムの各式における対応する論理的結合に関係し、前記少なくとも1つのニューロンは、前記対応する論理的結合のオペランドを含む入力情報および前記対応する論理的結合の真理関数を実装するように構成されたパラメータをさらに含む情報を提供する1または複数のリンク結合エッジを有しており、前記少なくとも1つのニューロンの各々は、計算を提供するための対応する活性化関数を有し、活性化関数の計算は、システム式の式に関する上限および下限を示す値のペアを返す、または前記システム式の前記式の命題の真理値を返す、
請求項10に記載の
コンピュータプログラム。
【請求項18】
安全な強化学習のためのコンピュータ処理システムであって、
プログラムコードを格納するための記憶装置と、
前記プログラムコードを実行するための1または複数のハードウェア処理ユニットと、
を含み、前記プログラムコードは、
環境の現在の状態を受信することと、
論理ニューラルネットワーク(LNN)構造を用いて、環境の前記現在の状態に基づいた論理的推論を評価することと、
前記論理的推論の評価に応じて、前記環境中のエージェントの可能なアクションのセットから各アクションの上限および下限を出力することと、
前記環境における前記エージェントの可能なアクションと前記環境の前記現在の状態との各ペアについて、前記上限および前記下限を用いることによって確率を計算することであって、計算された確率の各々は、前記各アクションのそれぞれの優先度を示す、計算することと、
前記計算された確率を用いることによって、前記環境の前記現在の状態に対する強化学習におけるポリシーを取得することと、
アクションの前記セットから1または複数のアクションを、前記1または複数のアクションが無視されるように前記ポリシーに違反するものとしてプルーニングすることと、
を実行する、コンピュータ処理システム。
【請求項19】
前記環境における前記エージェントの前記可能なアクションと前記環境の前記現在の状態との前記各ペアは、人間によって定義される、請求項18に記載のコンピュータ処理システム。
【請求項20】
前記環境における前記エージェントの前記可能なアクションと前記環境の前記現在の状態との前記各ペアは、入力された状態とアクションのペアから訓練される、請求項18に記載のコンピュータ処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に人工学習に関し、より詳細には、論理ニューラルネットワークによるアクションプルーニングに関する。
【背景技術】
【0002】
論理ニューラルネットワーク(LNN)は、NOT、AND、ORなどの論理関数を用いて訓練することができる。LNNは重み、活性化関数、バックワード関数、勾配を有する。このような構造は、この種の訓練のための最先端のニューラルネットワークである。論理情報は強化学習全般に役立つと思われるが、統合する方法は存在しない。
【0003】
アクションプルーニング(AP)は、マルコフ決定過程(MDP)から動的にアクションを取り除き、探索空間の分岐係数を減少させる手法である。しかしながら、以下の項目を含むAP手法は存在しない:APのための人間入力として論理ルールを定義する;人間入力から生成される追加のネットワークワークによってアクション候補の確率を計算する;これらの確率をQ値やランダムアクションの重みとして使用する。
【発明の概要】
【0004】
本発明の態様によれば、強化学習におけるアクションプルーニングのためのコンピュータ実装方法が提供される。本方法は、環境の現在の状態を受信することを含む。本方法はさらに、論理ニューラルネットワーク(LNN)構造を用いて、環境の現在の状態に基づいた論理的推論を評価することを含む。本方法はまた、論理的推論の評価に応じて、環境中のエージェントの可能なアクションのセットから各アクションの上限および下限を出力することを含む。本方法は、さらに、環境におけるエージェントの可能なアクションと環境の現在の状態との各ペアについて、上限および下限を用いることによって確率を計算することを含む。計算された確率の各々は、各アクションのそれぞれの優先度を示す。本方法は、計算された確率を用いることによって、環境の現在の状態に対する強化学習におけるポリシーを取得することをさらに含む。本方法はまた、アクションのセットから1または複数のアクションを、1または複数のアクションが無視されるようにポリシーに違反するものとしてプルーニングすることを含む。
【0005】
本発明の他の態様によれば、強化学習におけるアクションプルーニングのためのコンピュータプログラム製品が提供される。コンピュータプログラム製品は、プログラム命令をその中に実装した非一時的コンピュータ可読記憶媒体を含む。プログラム命令は、コンピュータによって実行可能でありコンピュータに方法を実行させる。本方法は、環境の現在の状態を受信することを含む。本方法はさらに、論理ニューラルネットワーク(LNN)構造を用いて、環境の現在の状態に基づいた論理的推論を評価することを含む。本方法はまた、論理的推論の評価に応じて、環境中のエージェントの可能なアクションのセットから各アクションの上限および下限を出力することを含む。本方法はさらに、環境におけるエージェントの可能なアクションと環境の現在の状態との各ペアについて、上限および下限を用いることによって確率を計算することを含む。計算された確率の各々は、各アクションのそれぞれの優先度を示す。本方法は、計算された確率を用いることによって、環境の現在の状態に対する強化学習におけるポリシーを取得することをさらに含む。本方法はまた、アクションのセットから1または複数のアクションを、1または複数のアクションが無視されるようにポリシーに違反するものとしてプルーニングすることを含む。
【0006】
本発明のさらに他の態様によれば、安全な強化学習のためのコンピュータ処理システムが提供される。コンピュータ処理システムは、プログラムコードを格納するための記憶装置を含む。コンピュータ処理システムは、環境の現在の状態を受信するプログラムコードを実行するための1または複数のハードウェア処理ユニットをさらに含む。1または複数のハードウェア処理ユニットは、さらに、論理ニューラルネットワーク(LNN)構造を用いて、環境の現在の状態に基づいた論理的推論を評価するプログラムコードを実行する。1または複数のハードウェア処理ユニットはまた、論理的推論の評価に応じて、環境中のエージェントの可能なアクションのセットから各アクションの上限および下限を出力するプログラムコードを実行する。1または複数のハードウェア処理ユニットは、さらに、環境におけるエージェントの可能なアクションと環境の現在の状態との各ペアについて、上限および下限を用いることによって確率を計算するプログラムコードを実行する。計算された確率の各々は、各アクションのそれぞれの優先度を示す。1または複数のハードウェア処理ユニットは、さらに、計算された確率を用いることによって、環境の現在の状態に対する強化学習におけるポリシーを取得するプログラムコードを実行する。1または複数のハードウェア処理ユニットはまた、アクションのセットから1または複数のアクションを、1または複数のアクションが無視されるようにポリシーに違反するものとしてプルーニングするプログラムコードを実行する。
【0007】
これらおよび他の特徴および利点は、添付の図面と関連して読まれる、その例示的な実施形態の以下の詳細な説明から明らかになるであろう。
【0008】
以下の説明では、以下の図を参照しながら、好ましい実施形態の詳細が提供される。
【図面の簡単な説明】
【0009】
【
図1】本発明の一実施形態による、例示的なコンピューティングデバイスを示すブロック図である。
【
図2】本発明の一実施形態による、本発明を適用することができる例示的なLNNグラフ構造を示すブロック図である。
【
図3】本発明の一実施形態による、上向きパスの例示的な擬似コードを示すブロック図である。
【
図4】本発明の一実施形態による、下向きパスの例示的な擬似コードを示すブロック図である。
【
図5】本発明の一実施形態による、再帰的推論手順の例示的な擬似コードを示すブロック図である。
【
図6】本発明の一実施形態による、例示的なアーキテクチャおよび対応するシグナルを示すブロック図である。
【
図7】本発明の一実施形態による、例示的な方法を示す。
【
図8】本発明の一実施形態による、例示的な方法を示す。
【
図9】本発明の一実施形態による、クラウドコンシューマが使用するローカルコンピューティングデバイスが通信する1または複数のクラウドコンピューティングノードを有する例示的なクラウドコンピューティング環境を示すブロック図である。
【
図10】本発明の一実施形態による、クラウドコンピューティング環境によって提供される機能的抽象化レイヤのセットを示すブロック図である。
【発明を実施するための形態】
【0010】
本発明の実施形態は、論理的ニューラルネットワークによるアクションプルーニングを対象とする。
【0011】
本発明の1つまたは複数の実施形態は、従来技術の構造よりも悪いアクションに対してより複雑な構造を定義する。
【0012】
また、本発明の1または複数の実施形態では、所定の軌跡から訓練することができる論理ニューラルネットワーク(LNN)を使用する(他の論理フレームワークはそのように訓練することができない)。
【0013】
論理ニューラルネットワーク(LNN)は、ニューラルネット(学習)と記号論理(推論)の両方の主要な特性を同時に提供する新しい表現方法である。LNNは、ドメイン知識を組み込むことができ、複合一次論理式をサポートすることができる。本発明の1または複数の実施形態は、知識誘導、知識表現、および推論を標準化するためにLNNを採用する。
【0014】
一実施形態では、LNNは、重み付けされた実数値論理の様々なシステムのいずれかにおける論理式のセットに1対1で対応する再帰的ニューラルネットワークの一形態として実装され、評価は論理的推論を実行する。LNNを他のニューラルネットワークと区別する特徴としては、(1)ニューラル活性化関数が、それらが表す論理演算(すなわち、∧、∨、¬、→、FOLでは∀と∃)の真理関数を実装するように制約されている、(2)結果が、既知、ほぼ既知、未知、矛盾する状態を区別するために真理値の境界で表される、および(3)双方向推論の許容(例えば、xが与えられたときにyを、または同様に¬yが与えられたときに¬xを証明することができることに加えて、x→yを通常どおり評価する。)が挙げられる。モデル化された論理システムの性質は、論理の様々な原子と演算を実装するネットワークのニューロンに選択された活性化関数のファミリーに依存する。
【0015】
図1は、本発明の一実施形態による、例示的なコンピューティングデバイス100を示すブロック図である。コンピューティングデバイス100は、論理ニューラルネットワーク(LNN)によるアクションプルーニング(AP)を実行するように構成される。
【0016】
コンピューティングデバイス100は、限定されないが、コンピュータ、サーバ、ラックベースサーバ、ブレードサーバ、ワークステーション、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、モバイルコンピューティングデバイス、ウェアラブルコンピューティングデバイス、ネットワーク機器、ウェブ機器、分散コンピューティングシステム、プロセッサベースシステム、もしくは消費者電子デバイスまたはその組み合わせを含む、本明細書に記載する機能を実行できる任意のタイプの計算装置またはコンピュータデバイスとして実装されてもよい。加えて、または代替的に、コンピューティングデバイス100は、1つ以上のコンピュートスレッド、メモリスレッド、または他のラック、スレッド、コンピューティングシャーシ、または物理的に分解されたコンピューティングデバイスの他のコンポーネントとして実装されてもよい。
図1に示すように、コンピューティングデバイス100は、例示的に、プロセッサ110、入力/出力サブシステム120、メモリ130、データ記憶装置140、および通信サブシステム150、もしくは、サーバもしくは同様のコンピューティングデバイスに一般的に見られる他のコンポーネントおよびデバイス、またはその組み合わせを含む。もちろん、コンピューティングデバイス100は、他の実施形態において、サーバコンピュータ(例えば、様々な入力/出力デバイス)において一般的に見出されるものなどの他のまたは追加のコンポーネントを含んでもよい。さらに、いくつかの実施形態において、例示的なコンポーネントのうちの1つ以上が、別のコンポーネントに組み込まれ、または別のコンポーネントの一部を形成していてもよい。例えば、メモリ130、またはその一部は、いくつかの実施形態において、プロセッサ110に組み込まれてもよい。
【0017】
プロセッサ110は、本明細書に記載された機能を実行することができる任意のタイプのプロセッサとして実装されてもよい。プロセッサ110は、単一のプロセッサ、複数のプロセッサ、(1つ以上の)中央処理装置((1つ以上の)CPU)、(1つ以上の)グラフィックス処理装置((1つ以上の)GPU)、(1つ以上の)単一またはマルチコアプロセッサ、(1つ以上の)デジタル信号プロセッサ、(1つ以上の)マイクロコントローラ、または他の(1つ以上の)プロセッサもしくは(1つ以上の)処理/制御回路として実装されてもよい。
【0018】
メモリ130は、本明細書に記載された機能を実行することができる任意のタイプの揮発性または不揮発性メモリまたはデータストレージとして実装されてもよい。動作において、メモリ130は、オペレーティングシステム、アプリケーション、プログラム、ライブラリ、およびドライバなど、コンピューティングデバイス100の動作中に使用される様々なデータおよびソフトウェアを格納してもよい。メモリ130は、I/Oサブシステム120を介してプロセッサ110に通信可能に結合され、プロセッサ110、メモリ130、およびコンピューティングデバイス100の他のコンポーネントとの入力/出力動作を容易にするための回路もしくはコンポーネントまたはその両方として実装されてもよい。例えば、I/Oサブシステム120は、メモリコントローラハブ、入力/出力制御ハブ、プラットフォームコントローラハブ、集積制御回路、ファームウェアデバイス、通信リンク(例えば、ポイントツーポイントリンク、バスリンク、ワイヤ、ケーブル、ライトガイド、プリント回路基板トレースなど)もしくは、入力/出力動作を容易にするための他の構成要素およびサブシステム、またはその組み合わせとして実装されてもよく、そうでなければ含んでもよい。いくつかの実施形態では、I/Oサブシステム120は、システムオンチップ(SOC)の一部を形成し、プロセッサ110、メモリ130、およびコンピューティングデバイス100の他のコンポーネントとともに、単一の集積回路チップ上に組み込まれてもよい。
【0019】
データ記憶装置140は、例えば、メモリ装置および回路、メモリカード、ハードディスクドライブ、ソリッドステートドライブ、または他のデータ記憶装置など、データの短期または長期記憶用に構成された任意のタイプの1つ以上のデバイスとして実装されてもよい。データ記憶装置140は、論理ニューラルネットワーク(LNN)によるアクションプルーニング(AP)のためのプログラムコードを格納することができる。コンピューティングデバイス100の通信サブシステム150は、ネットワークを介してコンピューティングデバイス100と他のリモートデバイスとの間の通信を可能にすることができる、任意のネットワークインタフェースコントローラまたは他の通信回路、デバイス、またはその集合体として実装されてもよい。通信サブシステム150は、任意の1つ以上の通信技術(例えば、有線または無線通信)および関連プロトコル(例えば、イーサネット、InfiniBand(登録商標)、Bluetooth(登録商標)、Wi-Fi(登録商標)、WiMAXなど)を使用してそのような通信を実現するように構成されてもよい。
【0020】
図示されるように、コンピューティングデバイス100はまた、1つ以上の周辺デバイス160を含んでもよい。周辺デバイス160は、任意の数の追加の入力/出力デバイス、インタフェースデバイス、もしくは他の周辺デバイスまたはその組み合わせを含んでもよい。例えば、いくつかの実施形態では、周辺デバイス160は、ディスプレイ、タッチスクリーン、グラフィック回路、キーボード、マウス、スピーカーシステム、マイクロフォン、ネットワークインタフェース、もしくは、他の入力/出力デバイス、インタフェースデバイスもしくは周辺デバイスまたはその組み合わせ、またはその組み合わせを含んでもよい。
【0021】
もちろん、コンピューティングデバイス100はまた、当業者によって容易に企図されるように、他の要素(不図示)を含み得るだけでなく、特定の要素を省略し得る。例えば、様々な他の入力デバイスもしくは出力デバイスまたはその両方は、当業者によって容易に理解されるように、同じものの特定の実装に依存して、コンピューティングデバイス100に含まれることが可能である。例えば、様々なタイプの無線もしくは有線またはその両方の入力デバイス、もしくは出力デバイス、またはその両方を使用することができる。さらに、様々な構成の追加のプロセッサ、コントローラ、メモリ等も利用することができる。さらに、別の実施形態では、クラウド構成が使用され得る(例えば、
図9~
図10参照)。処理システム100のこれらおよび他の変形は、本明細書で提供される本発明の教示を考慮すれば、当業者によって容易に企図されるものである。
【0022】
本明細書で使用される場合、「ハードウェアプロセッササブシステム」または「ハードウェアプロセッサ」という用語は、1つ以上の特定のタスクを実行するために協働するプロセッサ、メモリ(RAM、(1つ以上の)キャッシュなどを含む)、ソフトウェア(メモリ管理ソフトウェアを含む)またはそれらの組合せを指すことができる。有用な実施形態では、ハードウェアプロセッササブシステムは、1つ以上のデータ処理要素(例えば、論理回路、処理回路、命令実行デバイスなど)を含むことができる。1つ以上のデータ処理要素は、中央処理装置、グラフィックス処理装置、もしくは別個のプロセッサもしくは演算要素ベースのコントローラ(例えば、論理ゲートなど)、またはその組み合わせに含まれ得る。ハードウェアプロセッササブシステムは、1つ以上のオンボードメモリ(例えば、キャッシュ、専用メモリアレイ、読み取り専用メモリなど)を含むことができる。いくつかの実施形態では、ハードウェアプロセッササブシステムは、オンボードまたはオフボードであり得る、またはハードウェアプロセッササブシステムによる使用のために専用であり得る1つ以上のメモリ(例えば、ROM、RAM、基本入力/出力システム(BIOS)など)を含むことが可能である。
【0023】
いくつかの実施形態では、ハードウェアプロセッササブシステムは、1つ以上のソフトウェア要素を含み、実行することができる。1つ以上のソフトウェア要素は、指定された結果を達成するためのオペレーティングシステム、もしくは1つ以上のアプリケーションもしくは特定のコードまたはその両方、またはその両方、を含むことができる。
【0024】
他の実施形態では、ハードウェアプロセッササブシステムは、指定された結果を達成するために1つ以上の電子処理機能を実行する専用の特殊な回路を含むことができる。そのような回路は、1つ以上の特定用途向け集積回路(ASIC)、FPGA、もしくはPLA、またはその組み合わせを含むことができる。
【0025】
ハードウェアプロセッササブシステムのこれらおよび他の変形もまた、本発明の実施形態に従って企図される。
【0026】
図2は、本発明の一実施形態による、本発明を適用することができる例示的なLNNグラフ構造200を示すブロック図である。
【0027】
LNNグラフ構造は、それが表す数式を反映している。
【0028】
【0029】
例えば、ひげがTRUEの場合、上限値と下限値は、~1.0のような高い値を持つ。ひげがFALSEの場合、上限値と下限値は~0.0のような低い値を持つ。
【0030】
図3は、本発明の一実施形態による、上向きパスのための第1のアルゴリズムの例示的な擬似コード300を示すブロック図である。
【0031】
擬似コード300は、部分論理式境界のための式真理値境界を推論するための上向きパスに対応する。擬似コード300は、葉からの上向きの境界の伝搬、否定、多入力離散、および既存の境界の締め付けを含む。
【0032】
図4は、本発明の一実施形態による、下向きパスのための第2のアルゴリズムの例示的な擬似コード400を示すブロック図である。
【0033】
擬似コード400は、部分論理式境界のための式真理値境界を推論するための下向きパスに対応している。擬似コード400は、否定、多入力離散、および葉への下向きの境界の伝搬を含む。
【0034】
図5は、本発明の実施形態による、再帰的推論手順のための第3のアルゴリズムの例示的な擬似コード500を示すブロック図である。
【0035】
擬似コード500は、再帰的な方向性グラフのトラバーサルを伴う再帰的推論手順に対応する。擬似コード500は、収束するまでのループ、すべての式の根を順番に訪問する、葉から根へのトラバーサル、根から葉へのトラバーサルを含む。
【0036】
ここで、論理ニューラルネットワーク(LNN)についてさらに説明する。すべてのニューロンは、対応する部分論理式および命題の真理値の下限と上限を表す0~1の範囲の値のペアを返す。境界の解釈を容易にするために、連続した真理値がαより大きい場合に真とみなされ、1-αより小さい場合に偽とみなされるように、真の閾値1/2<α<1が定義されている。境界値は、ニューロンが取り得る4つの主要な状態のうちの1つを識別し、一方、2次状態は、より真より、またはより偽よりの解釈を与える。
【0037】
図6は、本発明の一実施形態による、例示的なアーキテクチャ600および対応するシグナルを示すブロック図である。
【0038】
アーキテクチャ600は、セマンティックパーサ610、強化学習要素620、論理ニューラルネットワーク(LNN)630、LNNアクションプルーニング要素640、および環境650を含む。
【0039】
セマンティックパーサ610は、入力されたエージェント状態をセマンティックに解析する。
【0040】
強化学習要素620は、Long Short Term Memory-Deep Q Network(LTSM-DQN)であってもよい。強化学習要素620は、安全な強化学習のためのアクションの候補を予測するベース強化学習方法である。
【0041】
LNN630は、安全制限の論理関数を理解するためのものである。
【0042】
LNNアクションプルーニング要素640は、無駄なアクションを回避するためのものである。
【0043】
環境650は、エージェントによるアクションが行われる場所である。
【0044】
以下のシグナルの定義が適用される。
【0045】
stはエージェントの状態を表す。
【0046】
st'は、セマンティックに修正されたエージェントの状態を表す。
【0047】
acttは、時刻tにおけるアクションを表す。
【0048】
rewardtは、時刻tにおける報酬を表す。
【0049】
【0050】
【0051】
図7~8は、本発明の一実施形態による、例示的な方法700を示す。
【0052】
ブロック710において、1または複数のハードウェア処理装置を、複数のニューロンおよび結合エッジを有する論理ニューラルネットワーク(LNN)構造として構成する。LNN構造の複数のニューロンおよび結合エッジは、論理式のシステムと1対1で対応し、論理的推論を実行するための方法を実行する。
【0053】
ブロック720において、論理式のシステムの各式における対応する論理的結合について、複数のニューロンのうちの少なくとも1つのニューロンを構成する。1つのニューロンは、論理的結合のオペランドを含む入力情報および論理的結合の真理関数を実装するように構成されたパラメータをさらに含む情報を提供する1または複数のリンク結合エッジを有する。対応する論理的結合の少なくとも1つのニューロンの各々は、計算を提供するための対応する活性化関数を有し、活性化関数の計算は、システム式の式に関する上限および下限を示す値のペアを返す、または命題の真理値を返す。システム式が論理式と異なるのは、システム式が論理式にはない論理ニューロンおよび活性化関数を有する点である。
【0054】
ブロック730において、システム式の式の対応する命題について、複数のニューロンのうちの少なくとも1つの他のニューロンを構成する。少なくとも1つの他のニューロンは、対応する命題の真理値に関する境界を証明する情報を提供する式に対応する1または複数のリンク結合エッジを有し、情報はさらに、最もタイトな限界を集約するように構成されたパラメータを含む。「最もタイトな限界を集約する」という用語は、所定のアクションに対する最もタイトな限界を収集することを意味する。
【0055】
ブロック740において、環境の現在の状態を受信する。
【0056】
ブロック750において、論理ニューラルネットワーク(LNN)構造を用いて、環境の現在の状態に基づいた論理的推論を評価する。
【0057】
ブロック760において、論理的推論の評価に応じて、環境中のエージェントの可能なアクションのセットから各アクションの上限および下限を出力する。
【0058】
ブロック770において、環境におけるエージェントの可能なアクションと環境の現在の状態の各ペアについて、上限および下限を用いることによって確率を計算し、計算された確率の各々は、各アクションのそれぞれの優先度を示す。本明細書において、「優先度」という用語は、対象となるアクションをとることを優先するための値を意味する。
【0059】
ブロック780において、計算された確率を用いることによって、環境の現在の状態に対する強化学習におけるポリシーを取得する。
【0060】
ブロック790において、アクションのセットから1または複数のアクションを、1または複数のアクションが無視される(エージェントによって環境内で実行されない)ようにポリシーに違反するものとしてプルーニングする。
【0061】
次に、本発明の一実施形態による、LNNからの確率の定義について説明する。
【0062】
人間によって定義される、または入力された状態とアクションのペアから訓練されるアクションatおよび所定の状態stについて、論理ニューラルネットワーク(LNN)から確率を計算する。
【0063】
【0064】
【0065】
【0066】
次に、本発明に従って使用されるLNNの可能な要件について説明する。
【0067】
各ニューロン(命題で表される)は上限値と下限値を持つ必要があり、これらは活性化関数と重み値で論理的結合演算子(AND、OR、IMPLYゲート)に接続される。
【0068】
入力層は状態入力に対するいくつかの命題(本発明では、各環境状態入力に対する論理状態である)を持ち、隠れ層は論理演算子(これらはいくつかの重み値を持つ)を持ち、出力層はアクションに対するいくつかの命題を持つ。
【0069】
出力層は、強化学習の出力からアクション値を設定する必要はない。出力層の出力(LNNの出力である)は、アクションの選択(拒否だけでなく、推奨も含む)に使用される。
【0070】
アクション値を計算するためには、すべてのアクションに対する命題が設定されている必要がある。
【0071】
パラメータ(つまり、重みとバイアス値)は、実行中に訓練可能である。
【0072】
次に、本発明の一実施形態によるアクションプルーニングについてさらに説明する。
【0073】
ここで、aは確率を計算するための対象となるアクションであり、Aは全てのアクションである。値v(a;s
t)は、矛盾値を割り引いた上で、命題の真理値のレベルを表す。
【0074】
【0075】
本開示はクラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載した教示の実装形態はクラウドコンピューティング環境に限定されないことが理解される。むしろ、本発明の実施形態は、現在公知のまたは将来開発される他の任意の種類のコンピュータ環境と共に実施することができる。
【0076】
クラウドコンピューティングは、設定可能なコンピューティングリソースの共有プール(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシンおよびサービス)へ、簡便かつオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルであり、リソースは、最小限の管理労力または最小限のサービスプロバイダとのやり取りによって速やかに準備(provision)およびリリースできるものである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの実装モデルを含むことがある。
【0077】
特性は以下の通りである。
【0078】
オンデマンド・セルフサービス:クラウドの消費者は、サービスプロバイダとの人的な対話を必要することなく、必要に応じて自動的に、サーバ時間やネットワークストレージなどのコンピューティング能力を一方的に準備することができる。
【0079】
ブロード・ネットワークアクセス:コンピューティング能力はネットワーク経由で利用可能であり、また、標準的なメカニズムを介してアクセスできる。それにより、異種のシンまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、PDA)による利用が促進される。
【0080】
リソースプーリング:プロバイダのコンピューティングリソースはプールされ、マルチテナントモデルを利用して複数の消費者に提供される。様々な物理リソースおよび仮想リソースが、需要に応じて動的に割り当ておよび再割り当てされる。一般に消費者は、提供されたリソースの正確な位置を管理または把握していないため、位置非依存(location independence)の感覚がある。ただし消費者は、より高い抽象レベル(例えば、国、州、データセンタ)では場所を特定可能な場合がある。
【0081】
迅速な柔軟性(elasticity):コンピューティング能力は、迅速かつ柔軟に準備することができるため、場合によっては自動的に、直ちにスケールアウトし、また、速やかにリリースされて直ちにスケールインすることができる。消費者にとって、準備に利用可能なコンピューティング能力は無制限に見える場合が多く、任意の時間に任意の数量で購入することができる。
【0082】
測定されるサービス:クラウドシステムは、サービスの種類(例えば、ストレージ、処理、帯域幅、アクティブユーザアカウント)に適したある程度の抽象化レベルでの測定機能を活用して、リソースの使用を自動的に制御し最適化する。リソース使用量を監視、制御、および報告して、利用されるサービスのプロバイダおよび消費者の両方に透明性を提供することができる。
【0083】
サービスモデルは以下の通りである。
【0084】
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウドインフラストラクチャ上で動作するプロバイダのアプリケーションを利用できることである。当該そのアプリケーションは、ウェブブラウザ(例えばウェブメール)などのシンクライアントインタフェースを介して、各種のクライアント装置からアクセスできる。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージや、個別のアプリケーション機能さえも含めて、基礎となるクラウドインフラストラクチャの管理や制御は行わない。ただし、ユーザ固有の限られたアプリケーション構成の設定はその限りではない。
【0085】
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラム言語およびツールを用いて、消費者が作成または取得したアプリケーションを、クラウドインフラストラクチャに展開(deploy)することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、展開されたアプリケーションを制御でき、かつ場合によってはそのホスティング環境の構成も制御できる。
【0086】
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、オペレーティングシステムやアプリケーションを含み得る任意のソフトウェアを消費者が展開および実行可能な、プロセッサ、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースを準備することである。消費者は、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、オペレーティングシステム、ストレージ、および展開されたアプリケーションを制御でき、かつ場合によっては一部のネットワークコンポーネント(例えばホストファイアウォール)を部分的に制御できる。
【0087】
展開モデルは以下の通りである。
【0088】
プライベートクラウド:このクラウドインフラストラクチャは、特定の組織専用で運用される。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0089】
コミュニティクラウド:このクラウドインフラストラクチャは、複数の組織によって共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス)を持つ特定のコミュニティをサポートする。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0090】
パブリッククラウド:このクラウドインフラストラクチャは、不特定多数の人々や大規模な業界団体に提供され、クラウドサービスを販売する組織によって所有される。
【0091】
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ以上のクラウドモデル(プライベート、コミュニティまたはパブリック)を組み合わせたものとなる。それぞれのモデル固有の実体は保持するが、標準または個別の技術によってバインドされ、データとアプリケーションの可搬性(例えば、クラウド間の負荷分散のためのクラウドバースティング)を実現する。
【0092】
クラウドコンピューティング環境は、ステートレス性(statelessness)、低結合性(low coupling)、モジュール性(modularity)および意味論的相互運用性(semantic interoperability)に重点を置いたサービス指向型環境である。クラウドコンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0093】
図9を参照すると、例示的なクラウドコンピューティング環境950が描かれている。クラウドコンピューティング環境950は1つまたは複数のクラウドコンピューティングノード910を含む。これらに対して、クラウド消費者が使用するローカルコンピュータ装置(例えば、PDAもしくは携帯電話954A、デスクトップコンピュータ954B、ラップトップコンピュータ954C、もしくは自動車コンピュータシステム954Nまたはこれらの組み合わせなど)は通信を行うことができる。ノード910は互いに通信することができる。ノード910は、例えば、上述のプライベート、コミュニティ、パブリックもしくはハイブリッドクラウドまたはこれらの組み合わせなど、1つまたは複数のネットワークにおいて、物理的または仮想的にグループ化(不図示)することができる。これにより、クラウドコンピューティング環境950は、サービスとしてのインフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせを提供することができ、クラウド消費者はこれらについて、ローカルコンピュータ装置上にリソースを維持する必要がない。なお、
図9に示すコンピュータ装置954A~Nの種類は例示に過ぎず、コンピューティングノード910およびクラウドコンピューティング環境950は、任意の種類のネットワークもしくはネットワークアドレス指定可能接続(例えば、ウェブブラウザの使用)またはその両方を介して、任意の種類の電子装置と通信可能であることを理解されたい。
【0094】
図10を参照すると、クラウドコンピューティング環境950によって提供される機能的抽象化モデルレイヤのセットが示されている。なお、
図10に示すコンポーネント、レイヤおよび機能は例示に過ぎず、本発明の実施形態はこれらに限定されないことをあらかじめ理解されたい。図示するように、以下のレイヤおよび対応する機能が提供される。
【0095】
ハードウェアおよびソフトウェアレイヤ1060は、ハードウェアコンポーネントおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム1061、縮小命令セットコンピュータ(RISC)アーキテクチャベースのサーバ1062、サーバ1063、ブレードサーバ1064、記憶装置1065、ならびにネットワークおよびネットワークコンポーネント1066が含まれる。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア1067およびデータベースソフトウェア1068を含む。
【0096】
仮想化レイヤ1070は、抽象化レイヤを提供する。当該レイヤから、例えば以下の仮想エンティティを提供することができる:仮想サーバ1071、仮想ストレージ1072、仮想プライベートネットワークを含む仮想ネットワーク1073、仮想アプリケーションおよびオペレーティングシステム1074、ならびに仮想クライアント1075。
【0097】
一例として、管理レイヤ1080は以下の機能を提供することができる。リソース準備1081は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソースおよび他のリソースの動的な調達を可能にする。計量および価格設定1082は、クラウドコンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費に対する請求またはインボイス送付を可能にする。一例として、これらのリソースはアプリケーションソフトウェアのライセンスを含んでよい。セキュリティは、データおよび他のリソースに対する保護のみならず、クラウドコンシューマおよびタスクの識別確認を可能にする。ユーザポータル1083は、コンシューマおよびシステム管理者にクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理1084は、要求されたサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当ておよび管理を可能にする。サービス品質保証(SLA)の計画および履行1085は、SLAに従って将来必要になると予想されるクラウドコンピューティングリソースの事前手配および調達を可能にする。
【0098】
ワークロードレイヤ1090は、クラウドコンピューティング環境が利用可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例には、マッピングおよびナビゲーション1091、ソフトウェア開発およびライフサイクル管理1092、仮想教室教育の配信1093、データ分析処理1094、取引処理1095、ならびに、LNNによる安全な強化学習1096が含まれる。
【0099】
本発明は、任意の可能な技術詳細レベルで統合されたシステム、方法もしくはコンピュータプログラム製品またはそれらの組み合せとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでよい。
【0100】
コンピュータ可読記憶媒体は、命令実行装置によって使用される命令を保持し、記憶することができる有形の装置とすることができる。コンピュータ可読記憶媒体は、一例として、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置またはこれらの適切な組み合わせであってよい。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、EPROM(またはフラッシュメモリ)、SRAM、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化された装置、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶装置は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
【0101】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理装置に、または、ネットワーク(例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、もしくはワイヤレスネットワークまたはその組み合わせ)を介して外部コンピュータまたは外部記憶装置にダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバー、無線伝送、ルーター、ファイアウォール、スイッチ、ゲートウェイコンピュータ、もしくはエッジサーバーまたはその組み合わせを含み得る。各コンピューティング/処理装置のネットワークアダプタカードまたはネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理装置内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【0102】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSMALLTALK(登録商標)、C++などのオブジェクト指向プログラミング言語と「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードまたはオブジェクトコードのいずれかであってよい。コンピュータ可読プログラム命令は、スタンドアロンソフトウェアパッケージとして、完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または完全にリモートコンピュータまたはサーバ上で実行可能である。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され、または(例えば、インターネットサービスプロバイダーを使用したインターネット経由で)外部コンピュータに接続されてよい。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用してパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
【0103】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本明細書に記載されている。フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
【0104】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令がフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/動作を実装するための手段を生成するように、機械を生成するために汎用コンピュータ、専用コンピュータのプロセッサまたは他のプログラム可能なデータ処理装置に提供されることができる。これらのコンピュータ可読プログラム命令はまた、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/行為の態様を実装する命令を含む生成品の1つを命令が記憶されたコンピュータ可読プログラム命令が構成するように、コンピュータ、プログラム可能なデータ処理装置、もしくは特定の方法で機能する他のデバイスまたはその組み合わせに接続可能なコンピュータ可読記憶媒体の中に記憶されることができる。
【0105】
コンピュータ、他のプログラム可能な装置、または他のデバイス上でフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/行為を実行する命令のように、コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能な装置、または他のデバイス上で一連の操作ステップを実行し、コンピュータ実装された過程を生成することができる。
【0106】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品が実行可能な実装の構成、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、モジュール、セグメント、または命令の一部を表してよく、これは、指定された論理機能を実装するための1つまたは複数の実行可能命令を構成する。いくつかの代替の実施形態では、ブロックに示されている機能は、図に示されている順序とは異なる場合がある。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行されるか、またはブロックは、関係する機能に応じて逆の順序で実行される場合がある。ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方のブロックの組み合わせは、指定された機能または動作を実行する、または特別な目的のハードウェアとコンピュータ命令の組み合わせを実行する特別な目的のハードウェアベースのシステムによって実装できることにも留意されたい。
【0107】
本明細書において、本発明の「ある実施形態(one embodiment)」、「一実施形態(an embodiment)」、ならびにその他の変形への言及は、実施形態に関連して記載される特定の特徴、構造、または特性が、本発明の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書全体の様々な箇所に現れる「一実施形態において(in one embodiment)」または「ある実施形態において(in an embodiment)」という語句、ならびに任意の他の変形の出現は、必ずしもすべてが同じ実施形態を参照しているとは限らない。
【0108】
以下の「/」、「および/または(and/or)」、「の少なくとも1つ(at least one of)」のいずれかの使用、例えば、「A/B」、「Aおよび/またはB」、「AおよびBの少なくとも1つ」の場合、第1のリストされた選択肢(A)のみの選択、または第2のリストされた選択肢(B)のみの選択、または両方の選択肢(AおよびB)の選択を包含することが意図されていることが理解されよう。さらなる例として、「A、B、および/またはC」および「A、B、およびCの少なくとも1つ」の場合、そのような表現は、第1のリストされた選択肢(A)のみの選択、または第2のリストされた選択肢(B)のみの選択、または第3のリストされた選択肢(C)のみの選択、または、第1および第2のリストされた選択肢(AおよびB)のみの選択、または第1および第3のリストされた選択肢(AおよびC)のみの選択、または第2および第3のリストされた選択肢(BおよびC)のみの選択、または3つの選択肢すべて(AおよびBおよびC)の選択を包含することが意図されている。このことは、この技術および関連技術の通常の知識を有する者が容易に理解できるように、リストされた多くの項目について拡張することができる。
【0109】
システムおよび方法の好ましい実施形態(これらは例示であり限定的でないことが意図されている)が説明されてきたが、上記の教示に照らして当業者によって修正および変形がなされ得ることが指摘される。したがって、添付の特許請求の範囲によって概説される本発明の範囲内である、開示された特定の実施形態において変更がなされ得ることが理解されるであろう。このように、特許法が要求する詳細さおよび特殊性をもって本発明の態様が説明されてきたが、特許状によって保護されることを請求され、望まれるものは、添付の特許請求の範囲に記載されている。