(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-05-01
(54)【発明の名称】単純で効果的な敵対的攻撃方法としてのバリアント不一致攻撃(VIA)
(51)【国際特許分類】
G06N 20/00 20190101AFI20240423BHJP
G06N 3/094 20230101ALI20240423BHJP
【FI】
G06N20/00
G06N3/094
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023568351
(86)(22)【出願日】2022-03-29
(85)【翻訳文提出日】2023-12-18
(86)【国際出願番号】 US2022022291
(87)【国際公開番号】W WO2022235353
(87)【国際公開日】2022-11-10
(32)【優先日】2021-05-07
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ガッデ,シュリニバーサ・ファニ・クマール
(72)【発明者】
【氏名】ジャオ,シュ
(57)【要約】
本開示は、機械学習モデルの敵対的訓練に有用な敵対的サンプルを創出するための単純で効果的な敵対的攻撃方法として、バリアント不一致攻撃(VIA)を使用するための技術に関する。一特定態様では、機械学習モデルを攻撃するための入力サンプルのセット(サンプルのセットは対応するラベルを有していない)を取得することと、修正サンプルのペアを生成するために、サンプルのセットからのサンプルを効用保存方法で修正することと、修正サンプルのペアに対して予測のペアを生成するために、修正サンプルのペアを用いて機械学習モデルを攻撃することと、予測のペアが同じものまたは異なるものであるかを決定するために、予測のペアを比較することと、予測のペアが異なるものであることに応じて、修正サンプルのペアを敵対的サンプルのセットに追加することと、を含む方法が提供される。
【特許請求の範囲】
【請求項1】
コンピュータが実行する方法であって、
前記方法は、
機械学習モデルを攻撃するための入力サンプルのセットを取得するステップを含み、前記サンプルのセットは、対応するラベルを有さず、
前記方法は、
修正サンプルのペアを生成するために、効用保存方法で前記サンプルのセットからのサンプルを修正するステップをさらに含み、前記効用保存方法は、前記サンプルの元の意味または期待ラベルを変更せずに前記サンプルを修正するステップを含み、前記修正サンプルのペアは、同じ期待ラベルを共有し、
前記方法は、
前記機械学習モデルを前記修正サンプルのペアを用いて攻撃するステップをさらに含み、前記攻撃するステップは、
前記機械学習モデルにとって未知の前記同じ期待ラベルを維持しながら、前記修正サンプルのペアを前記機械学習モデルに入力するステップ、および
前記機械学習モデルが前記修正サンプルのペアに対して予測のペアを生成するステップ、を含み、
前記方法は、
前記予測のペアが同じものまたは異なるものであるかを決定するために、前記予測のペアを比較するステップをさらに含み、
前記方法は、
前記予測のペアが異なるものであることに応じて、前記修正サンプルのペアを敵対的サンプルのセットに追加するステップを含む、
コンピュータが実行する方法。
【請求項2】
前記敵対的サンプルのセットを使用して前記機械学習モデルまたは異なる機械学習モデルを訓練するステップをさらに含み、前記訓練するステップは、注釈付き敵対的サンプルを取得するために、期待ラベルを用いて前記敵対的サンプルのセット内の各サンプルに注釈を付けるステップと、前記注釈付き敵対的サンプルを前記機械学習モデルまたは前記異なる機械学習モデルに供給するステップと、目的関数の最大化または最小化に基づいて前記注釈付き敵対的サンプルを使用して複数のモデルパラメータを学習するステップと、を含む、請求項1に記載の方法。
【請求項3】
前記予測のペアが異なるものであることに応じて、前記修正サンプルのペアを前記敵対的サンプルペアのセットに追加するステップの前に、前記修正サンプルのペアの各修正サンプルが真の敵対的サンプルであるか否かを個別に決定するステップと、前記敵対的サンプルのセットへの前記修正サンプルの前記追加を、真の敵対的サンプルであるとみなされる前記修正サンプルの前記敵対的サンプルのセットへの追加のみに制限するステップと、をさらに含む、請求項1に記載の方法。
【請求項4】
前記機械学習モデルは、チャットボットシステムの部分である、請求項1に記載の方法。
【請求項5】
前記機械学習モデルは、固有表現認識モデル、意図認識モデル、または画像認識モデルである、請求項1に記載の方法。
【請求項6】
前記修正するステップは、前記サンプルにノイズを追加するステップを含む、請求項1に記載の方法。
【請求項7】
前記修正するステップは、前記サンプルから1つまたは複数の文字または単語を選択するステップと、前記1つまたは複数の文字または単語について挿入、削除、または置換操作を実行するステップと、を含む、請求項1に記載の方法。
【請求項8】
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサに結合されたメモリと、
を備え、前記メモリは、前記1つまたは複数のプロセッサによって実行可能な複数の命令を記憶し、前記複数の命令は、前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに処理を行わせる命令を含み、
前記処理は、
機械学習モデルを攻撃するための入力サンプルのセットを取得するステップを含み、前記サンプルのセットは対応するラベルを有さず、
前記処理は、
修正サンプルのペアを生成するために、効用保存方法で前記サンプルのセットからのサンプルを修正するステップをさらに含み、前記効用保存方法は、前記サンプルの元の意味または期待ラベルを変更せずに前記サンプルを修正するステップを含み、前記修正サンプルのペアは、同じ期待ラベル共有し、
前記処理は、
前記機械学習モデルを前記修正サンプルのペアを用いて攻撃するステップをさらに含み、前記攻撃するステップは、
前記機械学習モデルにとって未知の前記同じ期待ラベルを維持しながら、前記修正サンプルのペアを前記機械学習モデルに入力するステップ、および
前記機械学習モデルが前記修正サンプルのペアに対して予測のペアを生成するステップを含み、
前記処理は、
前記予測のペアが同じものまたは異なるものであるかを決定するために、前記予測のペアを比較するステップをさらに含み、
前記処理は、
前記予測のペアが異なるものであることに応じて、前記修正サンプルのペアを敵対的サンプルのセットに追加するステップをさらに含む、
システム。
【請求項9】
前記処理は、前記敵対的サンプルのセットを使用して前記機械学習モデルまたは異なる機械学習モデルを訓練するステップをさらに含み、前記訓練するステップは、注釈付き敵対的サンプルを取得するために、期待ラベルを用いて前記敵対的サンプルのセット内の各サンプルに注釈を付けるステップ、前記注釈付き敵対的サンプルを前記機械学習モデルまたは前記異なる機械学習モデルに供給するステップ、および目的関数の最大化または最小化に基づいて、前記注釈付き敵対的サンプルを使用して複数のモデルパラメータを学習するステップ、を含む、請求項8に記載のシステム。
【請求項10】
前記処理は、前記予測のペアが異なるものであることに応じて、前記修正サンプルのペアを前記敵対的サンプルペアのセットに追加する前に、前記修正サンプルのペアの各修正サンプルが真の敵対的サンプルであるか否かを個別に決定するステップと、前記敵対的サンプルのセットへの前記修正サンプルの前記追加を、真の敵対的サンプルであるとみなされる前記修正サンプルの前記敵対的サンプルのセットへの追加のみに制限するステップと、をさらに含む、請求項8に記載のシステム。
【請求項11】
前記機械学習モデルは、チャットボットシステムの部分である、請求項8に記載のシステム。
【請求項12】
前記機械学習モデルは、固有表現認識モデル、意図認識モデル、または画像認識モデルである、請求項8に記載のシステム。
【請求項13】
前記修正するステップは、ノイズを前記サンプルに追加するステップを含む、請求項8に記載のシステム。
【請求項14】
前記修正するステップは、前記サンプルから1つまたは複数の文字または単語を選択するステップと、前記1つまたは複数の文字または単語に対して挿入、削除、または置換操作を実行するステップと、を含む、請求項8に記載のシステム。
【請求項15】
1つまたは複数のプロセッサによって実行可能な複数の命令を記憶している非一時的コンピュータ可読メモリであって、前記複数の命令は、前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに処理を行わせる命令を含み、
前記処理は、
機械学習モデルを攻撃するための入力サンプルのセットを取得するステップを含み、前記サンプルのセットは対応するラベルを有さず、
前記処理は、
修正サンプルのペアを生成するために、効用保存方法で前記サンプルのセットからのサンプルを修正するステップをさらに含み、前記効用保存方法は、前記サンプルの元の意味または期待ラベルを変更せずに前記サンプルを修正するステップを含み、前記修正サンプルのペアは、同じ期待ラベル共有し、
前記処理は、
前記機械学習モデルを前記修正サンプルのペアを用いて攻撃するステップをさらに含み、前記攻撃するステップは、
前記機械学習モデルにとって未知の前記同じ期待ラベルを維持しながら、前記修正サンプルのペアを前記機械学習モデルに入力するステップ、および
前記機械学習モデルが前記修正サンプルのペアに対して予測のペアを生成するステップを含み、
前記処理は、
前記予測のペアが同じものまたは異なるものであるかを決定するために、前記予測のペアを比較するステップをさらに含み、
前記処理は、
前記予測のペアが異なるものであることに応じて、前記修正サンプルのペアを敵対的サンプルのセットに追加するステップをさらに含む、
非一時的コンピュータ可読メモリ。
【請求項16】
前記処理は、前記敵対的サンプルのセットを使用して、前記機械学習モデルまたは異なる機械学習モデルを訓練するステップをさらに含み、前記訓練するステップは、注釈付き敵対的サンプルを取得するために、期待ラベルを用いて前記敵対的サンプルのセット内の各サンプルに注釈を付けるステップ、前記注釈付き敵対的サンプルを前記機械学習モデルまたは前記異なる機械学習モデルに供給するステップ、および目的関数の最大化または最小化に基づいて、前記注釈付き敵対的サンプルを使用して複数のモデルパラメータを学習するステップ、を含む、請求項15に記載の非一時的コンピュータ可読メモリ。
【請求項17】
前記処理は、前記予測のペアが異なるものであることに応じて、前記修正サンプルのペアを前記敵対的サンプルペアのセットに追加する前に、前記修正サンプルのペアの各修正サンプルが真の敵対的サンプルであるか否かを個別に決定するステップと、前記敵対的サンプルのセットへの前記修正サンプルの前記追加を、真の敵対的サンプルであるとみなされる前記修正サンプルの前記敵対的サンプルのセットへの追加のみに制限するステップと、をさらに含む、請求項15に記載の非一時的コンピュータ可読メモリ。
【請求項18】
前記機械学習モデルは、固有表現認識モデル、意図認識モデル、または画像認識モデルである、請求項15に記載の非一時的コンピュータ可読メモリ。
【請求項19】
前記修正するステップは、前記サンプルにノイズを追加するステップを含む、請求項15に記載の非一時的コンピュータ可読メモリ。
【請求項20】
前記修正するステップは、前記サンプルから1つまたは複数の文字または単語を選択するステップと、前記1つまたは複数の文字または単語に対して挿入、削除、または置換操作を実行するステップと、を含む、請求項15に記載の非一時的コンピュータ可読メモリ。
【発明の詳細な説明】
【技術分野】
【0001】
優先権主張
本出願は、2021年5月7日に出願された米国仮出願第63/185,531号の非仮特許出願であり、その利益を主張するものであり、この出願は、あらゆる目的のためにその全体が参照により本明細書に組み込まれる。
【0002】
分野
本開示は、敵対的攻撃に関し、詳細には、機械学習モデルの敵対的訓練に有用な敵対的サンプルを創出するための、単純で効果的な敵対的攻撃方法としてバリアント不一致攻撃(VIA)を使用するための技術に関する。
【背景技術】
【0003】
背景
過去20年間における機械学習技術の急速な発展により、機械学習は、いくつか例を挙げると、顔認識、フェイクニュース検出、遺伝子系列解析のような現実世界の問題にまで拡大している。ただし、すべての機械学習モデルが不完全であることが、幾度も証明されている。実際、それらは、訓練済みモデルを失敗させるように綿密に作られた敵対的サンプルに対して非常に脆弱である。モデルを騙し得る敵対的サンプルは、健康分析、財務分析、個人の買い物行動分析などのような機密情報を扱うアプリケーションに重大な悪影響を与える可能性がある。たとえば、個人情報を編集するモデルを作成するために作られた敵対的サンプルは、機密情報を漏洩するか、または自動運転のようなアプリケーションに致命的な損害を生じさせ得る。
【0004】
したがって、モデルを製造に持ち込む前にそのような敵対的攻撃に対して防御することは、機械学習研究の重要で挑戦的な主題である。従来の研究は、敵対的訓練、つまり敵対的サンプルを元の訓練データセットと混合することが、敵対的攻撃に対してモデルを防御する効果的な方法であることを見出した。当然のことながら、敵対的訓練用の敵対的サンプルをどのように自動的に生成するかが、そのような攻撃に対する防御における重要な問題である。
【発明の概要】
【0005】
概要
本開示は、概して、敵対的攻撃に関する。より具体的には、本明細書で説明される技術は、機械学習モデルの敵対的訓練に有用な敵対的サンプルを創出するための、単純で効果的な敵対的攻撃方法としてVIAを使用することに関する。様々な発明の実施形態が、本明細書で説明されるが、それらは、方法、システム、1つまたは複数のプロセッサによってプログラム、コード、または命令を記憶する非一時的コンピュータ可読記憶媒体などを含む。
【0006】
様々な実施形態において、コンピュータが実行する方法が提供され、該方法は、機械学習モデルを攻撃するための入力サンプルのセットを取得するステップであって、サンプルのセットは、対応するラベルを有しない、ステップと、修正サンプルのペアを生成するために、効用保存方法においてサンプルのセットからのサンプルを修正するステップであって、効用保存方法は、サンプルの元の意味または期待ラベルを変更せずにサンプルを修正するステップを含み、修正サンプルのペアは、同じ期待ラベルを共有する、ステップと、修正サンプルのペアを用いて機械学習モデルを攻撃するステップであって、攻撃するステップは、(i)機械学習モデルにとって未知の同じ期待ラベルを維持しながら、修正サンプルのペアを機械学習モデルに入力するステップ、および(ii)機械学習モデルによって、修正サンプルのペアに対して予測のペアを生成するステップ、を含む、ステップと、予測のペアが同じものまたは異なるものであるかを決定するために、予測のペアを比較するステップと、予測のペアが異なるものであることに応じて、修正サンプルのペアを敵対的サンプルのセットに追加するステップと、を含む。
【0007】
いくつかの実施形態では、方法は、敵対的サンプルのセットを使用して機械学習モデルまたは異なる機械学習モデルを訓練するステップであって、訓練するステップは、注釈付き敵対的サンプルを取得するために敵対的サンプルのセット内の各サンプルに期待ラベルを用いて注釈を付けるステップと、注釈付き敵対的サンプルを機械学習モデルまたは異なる機械学習モデルに供給するステップと、目的関数の最大化または最小化に基づいて注釈付き敵対的サンプルを使用して複数のモデルパラメータを学習するステップと、をさらに含む。
【0008】
いくつかの実施形態では、方法は、予測のペアが異なるものであることに応じて、修正サンプルのペアを敵対的サンプルのペアのセットに追加するステップの前に、修正サンプルのペアの各修正サンプルが真の敵対的サンプルであるか否かを個別に決定するステップと、敵対的サンプルのセットへの修正サンプルの追加を、真の敵対的サンプルとみなされる修正サンプルの敵対的サンプルのセットへの追加のみに制限するステップと、をさらに含む。
【0009】
いくつかの実施形態では、機械学習モデルは、チャットボットシステムの部分である。
いくつかの実施形態では、機械学習モデルは、固有表現認識モデル、意図認識モデル、または画像認識モデルである。
【0010】
いくつかの実施形態では、修正するステップは、サンプルにノイズを追加するステップを含む。
【0011】
いくつかの実施形態では、修正するステップは、サンプルから1つまたは複数の文字または単語を選択するステップと、1つまたは複数の文字または単語について挿入、削除、または置換操作を実行するステップと、を含む。
【0012】
いくつかの実施形態では、システムが提供され、該システムは、1つまたは複数のデータプロセッサと、1つまたは複数のデータプロセッサ上で実行されると、1つまたは複数のデータプロセッサに本明細書で開示された1つまたは複数の方法の一部または全部を実行させる命令を含む非一時的コンピュータ可読記憶媒体と、を含む。
【0013】
いくつかの実施形態では、コンピュータプログラム製品が提供され、該製品は、非一時的機械可読記憶媒体に明白に具体化されており、そして1つまたは複数のデータプロセッサに本明細書で開示された1つまたは複数の方法の一部または全部を実行させるように構成された命令を含む。
【0014】
上記内容は、別の特徴および実施形態と一緒に、以下の明細書、特許請求の範囲、および添付の図面を参照するとより明らかになるであろう。
【図面の簡単な説明】
【0015】
【
図1】様々な実施形態に従うチャットボットシステムを組み込む環境についての簡略化ブロック図である。
【
図2】様々な実施形態に従うマスターボットを実装するコンピューティングシステムについての簡略化ブロック図である。
【
図3】様々な実施形態に従うスキルボットを実装するコンピューティングシステムについての簡略化ブロック図である。
【
図4A】様々な実施形態に従う画像の敵対的サンプルのペアである。
【
図4B】様々な実施形態に従う画像の敵対的サンプルのペアである。
【
図5】様々な実施形態に従うバリアント不一致攻撃を実装するためのコンピューティング環境を示す簡略化ブロック図である。
【
図6】様々な実施形態に従うバリアント不一致攻撃に関するプロセスフローである。
【
図7】様々な実施形態を実装するための分散システムについての簡略図である。
【
図8】様々な実施形態に従う、実施形態システムの1つまたは複数の構成要素によって提供されるサービスがそれによってクラウドサービスとして提供されてもよいシステム環境の1つまたは複数の構成要素についての簡略化ブロック図である。
【
図9】様々な実施形態を実装するために使用されてもよい例示的なコンピュータシステムについての図である。
【発明を実施するための形態】
【0016】
詳細な説明
以下の記述において、説明のために、特定の発明実施形態についての完全な理解を提供するために特定の詳細が記載される。しかしながら、様々な実施形態は、これらの特定の詳細がなくても実施され得ることが明らかであろう。図および説明は、限定することを意図したものではない。「例示的な」という単語は、本明細書において「例、実例、または例証として機能する」という意味で使用される。「例示的」として本明細書で説明される実施形態または設計は、必ずしも別の実施形態または設計よりも好ましいかまたは有利であると解釈されるべきではない。
【0017】
導入
近年、敵対的サンプルをどのように自動的に生成するかという問題に対処するための新しいアルゴリズムが提案されている。たとえば、Goodfellowらのもの(Ian J Goodfellow,Jonathon Shlens,and Christian Szegedy.Explaining and harnessing adversarial examples.In Proceedings of the 2015 International Conference on Learning Representation)は、高速勾配符号法(FGSM)ベースホワイトボックスアルゴリズムであり、著者らは、パンダ画像に小さい摂動を加えることによって、攻撃アルゴリズムがGoogLeNet(Szegedy,Christian,Liu,Wei,Jia,Yangqing,Sermanet,Pierre,Reed,Scott,Anguelov,Dragomir,Erhan,Dumitru,Vanhoucke,Vincent,and Rabinovich,Andrew.Going deeper with convolutions.Technical report,arXiv preprint arXiv:1409.4842,2014a)をうまく騙して、敵対的パンダ画像をテナガザルとしてそれに誤分類させることを主張する。Biggioらのもの(B.Biggio,I.Corona,D.Maiorca,B.Nelson,N.Smdi’c,P.Laskov,G.Giacinto,and F.Roli,“Evasion attacks against machine-learning at test time,”in Joint European Conference on Machine-learning and Knowledge Discovery in Databases.Springer,2013,pp.387-402)は、これも勾配ベースの攻撃方法であり、著者らは判別関数の勾配を操作することによって、線形分類器、サポートベクターマシン(SVM)、およびニューラルネットワークに対する敵対的サンプルを生成する。Lianらのもの(Bin Liang,Hongcheng Li,Miaoqiang Su,Pan Bian,Xirong Li,and Wenchang Shi.2017.Deep Text Classification Can be Fooled.arXiv preprint arXiv:1704.08006(2017))は、別の著作であって、著者らはFGSMのアイデアをテキストデータに拡張している。3つの異なる動作(挿入、削除、修正)を定義し、コスト勾配の大きさを処理することによって、それらは、DNNベース分類器を欺くためのテキストの敵対的サンプルをうまく生成する。
【0018】
ホワイトボックス攻撃と比較すると、ブラックボックス攻撃は、より魅力的であるように思われ、その理由は、その技術がモデルに依存せず、被害者モデルの内部アーキテクチャおよびパラメータについての事前の知識を前提としないからである。ブラックボックスモデルは、被害者モデルの入力および出力へのアクセスのみを必要とする。被害者モデルは、多層ディープニューラルネットワークのように複雑であるか、または線形回帰モデルのように単純であり得る。ジンらのもの(Di Jin,Zhijing Jin,Joey Tianyi Zhou,and Peter Szolovits.Textfool:Fool your model with naturaladversarial text.http://groups.csail.mit.edu/medg/ftp/psz-papers/2019%20Di%20Jin.pdf,2019)において、著者らは、いくつかの選択されたキーワードについての同義語を慎重に選択し、およびストップワードをフィルタリングし、テキスト間の意味的類似性の計算するようないくつかの別の技術を適用することによって、NLPモデルを攻撃するためにブラックボックス攻撃方法を使用しており、著者らは、それらが成功率と摂動率に関して最高水準の技術を上回っていると主張する。Gaoらのもの(Ji Gao,Jack Lanchantin,Mary Lou Soffa,and Yanjun Qi.2018.Black-box generation of adversarial text sequences to evade deep learning classifiers.arXiv preprint arXiv:1801.04354)は、Jinらと同様のアイデアを採用しているが、重要な単語を選択してトークンを変換するという異なる方法に用いている。Jiaらのもの(Robin Jia and Percy Liang.2017.Adversarial Examples for Evaluating Reading Comprehension Systems.In Proc.Of the 2017Conference on Empirical Methods in Natural Language Processing(EMNLP 2017).Copenhagen,Denmark,2021-2031)は、読解システムを攻撃するための代替作品であり、それらは、段落の最後に無意味な文を追加することで被害者モデルを騙し、段落と質問の回答とに同じ意味を維持する。
【0019】
これらの既存の攻撃方法は、敵対的サンプルを生成し得るが、それらは通常、攻撃アルゴリズムのための入力としてラベル付きデータを必要とし、現実世界のアプリケーションでこれを入手するのは困難である。これらの問題および別の問題に対処するために、本開示は、ラベル付け制約を解放し、ラベルなしデータを入力として利用する敵対的攻撃技術を導入し、それにより、生成され得る敵対的サンプルの数を劇的に増加させる。バリアント不一致(VI)に対して提案されたアルゴリズムおよび敵対的攻撃技術は、単純だが効果的なロジックに基づいており、所与の入力は、正しい予測を1つだけ有する、つまり、モデルが異なる予測を生成する場合、そのうちの少なくとも1つは、間違っているはずであると仮定する。VIを適用することによって、機械学習モデルを訓練するのに有用な敵対的サンプルを創出するためにラベル付きデータを必要とするという制約を除去することが可能である。
【0020】
本開示の例示的な一実施形態は、コンピュータが実行するプロセスを対象にされ、該プロセスは、機械学習モデルを攻撃するための入力サンプルのセットを取得することであって、サンプルのセットは、対応するラベルを有しない、ことと、修正サンプルのペアを生成するために、効用保存方法でサンプルのセットからの例を修正することであって、効用保存方法は、サンプルの元の意味または期待ラベルを変更せずにサンプルを修正することを含み、修正サンプルのペアは、同じ期待ラベルを共有する、ことと、機械学習モデルを修正サンプルのペアを用いて攻撃することであって、攻撃することは、(i)機械学習モデルにとって未知の同じ期待ラベルを維持しながら、修正サンプルのペアを機械学習モデルに入力することと、(ii)機械学習モデルによって、修正サンプルのペアに対して予測のペアを生成することと、を含む、ことと、予測のペアが同じであるか異なるかを決定するために、予測のペアを比較することと、予測のペアが異なるものであることに応じて、修正サンプルのペアを敵対的サンプルのセットに追加することと、を含む。
【0021】
ボットシステム
敵対的サンプルを生成するための本明細書で説明される敵対的攻撃技術は、敵対的攻撃に対してモデルを防御するための効果的な方法として使用され得る。様々な実施形態において、モデルは、デジタルアシスタントの一部として実装されてもよいが、ただし、本明細書で説明される技術は画像認識のような別の状況にも適用可能であることを理解されたい。デジタルアシスタントは、ユーザが自然言語会話で様々なタスクを遂行することを支援する人工知能駆動インタフェイスである。デジタルアシスタントごとに、顧客は、1つまたは複数のスキルを組み立ててもよい。スキル(本明細書では、チャットボット、ボット、またはスキルボットとも記述される)とは、在庫の追跡、タイムカードの提出、経費報告書の作成のような特定のタイプのタスクに焦点を定められた個別のボットである。エンドユーザがデジタルアシスタントと関係すると、デジタルアシスタントは、エンドユーザ入力を評価し、適切なチャットボットとの往復形式の会話をルーティングする。デジタルアシスタントは、FACEBOOK(登録商標)Messenger、SKYPE MOBILE(登録商標)メッセンジャ、またはShort Message Service(SMS)のような様々なチャネルを通してエンドユーザに利用可能にされ得る。チャネルは、様々なメッセージングプラットフォーム上のエンドユーザから、デジタルアシスタントおよびその様々なチャットボットにチャットをやり取りする。チャネルはまた、ユーザエージェントエスカレーション、イベント開始会話、およびテストをサポートしてもよい。
【0022】
意図が、ユーザがチャットボットにしてほしいことをチャットボットが理解することを可能にする。意図は、典型的なユーザの要求とステートメントとの順列から構成されており、これらは発話(たとえば、アカウント残高の取得、購入の実行など)とも呼ばれる。本明細書で使用されるように、発話またはメッセージが、チャットボットとの会話中に交換される単語のセット(たとえば、1つまたは複数の文)を指す場合がある。意図は、いくつかのユーザアクション(たとえば、ピザの注文)を示す名称を提供すること、および実際のユーザのステートメント、またはアクションのトリガーに一般に関連している発話のセットをコンパイルすることによって作成されてもよい。チャットボットの認識がこれらの意図から推論されるので、各意図が頑健で多様なデータセットから作成される(1乃至24個の発話)ことにより、チャットボットが曖昧なユーザ入力を解釈してもよい。発話の豊富なセットが、チャットボットが「この注文を忘れなさい!」または「配送をキャンセルしなさい!」というようなメッセージ、すなわち同じことを意味するが、表現が異なるメッセージを受け取ったときに、ユーザが何を望んでいるのかを理解することを可能にする。集合的に、意図とそれらに属する発話とが、チャットボットのための訓練コーパスを作成する。コーパスを使用してモデルを訓練することによって、顧客はそのモデルを、エンドユーザ入力を単一の意図に収まるための参照ツールに本質的に変えてもよい。顧客は、意図テストと意図訓練を繰り返すことで、チャットボットの認知の明瞭度を向上させ得る。
【0023】
ボット(スキル、チャットボット、チャッターボット、またはトークボットとも呼ばれる)は、エンドユーザとの会話を実行し得るコンピュータプログラムである。ボットは通常、自然言語メッセージを使用するメッセージングアプリケーションによって自然言語メッセージ(たとえば、質問またはコメント)に応答し得る。企業は、1つまたは複数のボットシステムを使用して、メッセージングアプリケーションによってエンドユーザと通信してもよい。チャネルと呼ばれることがあるメッセージングアプリケーションは、エンドユーザが既にインストールして使い慣れている、エンドユーザが好むメッセージングアプリケーションであってもよい。したがって、エンドユーザは、ボットシステムとチャットするために新しいアプリケーションをダウンロードしてインストールする必要がない。メッセージングアプリケーションは、たとえば、オーバーザトップ(OTT)メッセージングチャネル(Facebook Messenger、Facebook WhatsApp、WeChat、Line、Kik、Telegram、Talk、Skype、Slack、SMSのような)、仮想プライベートアシスタント(Amazon Dot、Echo、またはShow、Google Home、Apple HomePodなどのような)、チャット機能を有するネイティブまたはハイブリッド/レスポンシブモバイルアプリまたはウェブアプリケーションを拡大するモバイルおよびウェブアプリイクステンション、または音声ベース入力(Siri、Cortana、Google Voice、または別の対話用音声入力を使用するインタフェイスを有するデバイスまたはアプリのような)を含んでもよい。
【0024】
いくつかの例では、ボットシステムは、ユニフォームリソースアイデンティファイア(URI)に関連付けられ得る。URIは文字列を使用してボットシステムを識別してもよい。URIは、1つまたは複数のメッセージングアプリケーションシステムのウェブフックとして使用されてもよい。URIは、たとえば、ユニフォームリソースロケータ(URL)またはユニフォームリソースネーム(URN)を含んでもよい。ボットシステムは、メッセージングアプリケーションシステムからメッセージ(たとえば、ハイパーテキストトランスファープロトコル(HTTP)ポストコールメッセージ)を受信するように設計されてもよい。HTTPポストコールメッセージは、メッセージングアプリケーションシステムからURIに誘導されてもよい。いくつかの実施形態では、メッセージは、HTTPポストコールメッセージとは異なってもよい。たとえば、ボットシステムは、ショートメッセージサービス(SMS)からメッセージを受信してもよい。ここでの説明は、ボットシステムがメッセージとして受信する通信に言及する場合があるが、メッセージは、HTTPポストコールメッセージ、SMSメッセージ、または2つのシステム間の任意の別のタイプの通信であってもよいことを理解されたい。
【0025】
エンドユーザは、ちょうど人間同士間の対話のように、会話型対話(会話型ユーザインタフェイス(UI)と呼ばれることもある)によってボットシステムと対話してもよい。場合によっては、対話は、エンドユーザがボットに「こんにちは」と言うと、ボットが「やあ」と応答して、どうしましたかとエンドユーザに尋ねることを含むことがある。場合によっては、対話はまた、たとえば、1つの口座から別の口座に送金するような銀行ボットとの業務処理対話、たとえば、休暇残高の確認のようなHRボットとの情報対話、または、購入した商品の返品について話し合ったり、技術サポートを求めたりするような小売ボットとの対話であってもよい。
【0026】
いくつかの実施形態では、ボットシステムは、ボットシステムの管理者または開発者と対話することなく、エンドユーザ対話をインテリジェントに処理してもよい。たとえば、エンドユーザは、所望の目標を達成するために、ボットシステムに1つまたは複数のメッセージを送信してもよい。メッセージは、テキスト、絵文字、音声、画像、ビデオ、またはメッセージを伝達する別の方法のような特定のコンテンツを含んでもよい。いくつかの実施形態では、ボットシステムは、コンテンツを標準化形式(たとえば、適切なパラメータを有するエンタープライズサービスに対する表現状態転送(REST)コール)に変換し、自然言語応答を生成してもよい。ボットシステムはまた、エンドユーザに追加の入力パラメータを求めるか、または別の追加の情報を要求してもよい。いくつかの実施形態では、ボットシステムはまた、エンドユーザの発話に受動的に応答するのではなく、エンドユーザとの通信を開始してもよい。本明細書では、ボットシステムの明示的な呼出しを識別し、呼び出されるボットシステムに対する入力を決定するための様々な技術が説明される。特定の実施形態では、明示的な呼出し解析は、発話内の呼出し名の検出に基づいてマスターボットによって実行される。呼出し名の検出に応じて、発話は、呼出し名と関連したスキルボットへの入力のために改良されてもよい。
【0027】
ボットとの会話は、複数の状態を含む特定の会話フローに従ってもよい。フローは、入力に基づいて次に何が起こるかを定義してもよい。いくつかの実施形態では、ユーザ定義状態(たとえば、エンドユーザ意図)と、それらの状態で実行するアクションまたは状態から状態へのアクションと、を含む状態マシンが使用されて、ボットシステムを実装してもよい。会話は、エンドユーザ入力に基づいて異なるパスをたどる場合があり、それは、フローに対してボットが行う決定に影響を与えることがある。たとえば、各状態において、エンドユーザの入力または発話に基づいて、ボットは、取るべき次の適切なアクションを決定するために、エンドユーザの意図を決定してもよい。本明細書において発話と関連して使用されるとき、「意図」という用語は、発話を提供したユーザの意図を指す。たとえば、ユーザがピザを注文する会話においてボットと関係することを意図してもよく、その結果、ユーザの意図は、「ピザを注文する」という発話によって表現され得る。ユーザの意図は、ユーザがユーザの代わりにチャットボットに実行を望む特定のタスクに向けられ得る。そのため、発話は、ユーザの意図を反映する質問、コマンド、要求などとして述べられ得る。意図は、エンドユーザが達成したい目標を含んでもよい。
【0028】
チャットボットの構成と関連して、「意図」という用語は、本明細書では、ユーザの発話を、チャットボットが実行し得る特定のタスク/アクション、またはタスク/アクションのカテゴリにマッピングするための構成情報を指すために使用される。発話の意図(すなわち、ユーザの意図)とチャットボットの意図とを区別するために、本明細書では後者は「ボット意図」と呼ばれることがある。ボット意図は、意図と関連した1つまたは複数の発話のセットを含んでもよい。たとえば、ピザを注文するための意図は、ピザの注文をする願望を表現する発話の様々な順列を含み得る。これらの関連した発話が使用されることにより、チャットボットの意図分類器を訓練して、その後にユーザからの入力発話がピザ注文意図と一致するか否かを意図分類器が決定することを可能にし得る。ボット意図は、ユーザと特定の状態で会話を開始するための1つまたは複数のダイアログフローと関連し得る。たとえば、ピザ注文意図のための最初のメッセージは、「どのような種類のピザにしましょうか?」という質問であり得る。関連した発話に加えて、ボット意図は、その意図に関連する固有表現をさらに含んでもよい。たとえば、注文ピザ意図は、ピザを注文するというタスク、たとえば、トッピング1、トッピング2、ピザの種類、ピザのサイズ、ピザの量などを実行するために使用される変数またはパラメータを含み得る。エンティティの値は通常、ユーザと会話することによって取得される。
【0029】
図1は、特定の実施形態に従うチャットボットシステムを組み込む環境100の簡略化ブロック図である。環境100は、デジタルアシスタントビルダプラットフォーム(DABP)102を備え、これはDABP102のユーザがデジタルアシスタントまたはチャットボットシステムを作成および展開することを可能にする。DABP102が使用されて、1つまたは複数のデジタルアシスタント(またはDA)またはチャットボットシステムを作成し得る。たとえば、
図1に示すように、特定の企業を代表するユーザ104が、DABP102を使用することにより、特定の企業のユーザのためにデジタルアシスタント106を作成および展開し得る。たとえば、DABP102は、銀行が、その銀行の顧客による使用のための1つまたは複数のデジタルアシスタントを作成するために使用され得る。同じDABP102プラットフォームが複数の企業によって使用されることにより、デジタルアシスタントを作成し得る。別の例として、レストラン(たとえば、ピザ店)のオーナーは、DABP102を使用して、レストランの顧客が食べ物を注文(たとえば、ピザを注文)することを可能にするデジタルアシスタントを作成および展開してもよい。
【0030】
本開示の目的に関して、「デジタルアシスタント」とは、デジタルアシスタントのユーザが自然言語会話によって様々なタスクを達成するのを支援するエンティティである。デジタルアシスタントは、ソフトウェアだけを使用して(たとえば、デジタルアシスタントは、1つまたは複数のプロセッサによって実行可能なプログラム、コード、または命令を使用して実装されるデジタルエンティティである)、ハードウェアを使用して、またはハードウェアとソフトウェアの組み合わせを使用して、実装され得る。デジタルアシスタントは、コンピュータ、携帯電話、時計、器具、車両などのような様々な物理システムまたはデバイスにおいて具現化または実装され得る。デジタルアシスタントは、チャットボットシステムと呼ばれることもある。したがって、本開示の目的に関して、デジタルアシスタントという用語およびチャットボットシステムという用語とは、交換可能である。
【0031】
DABP102を使用して構築されたデジタルアシスタント106のようなデジタルアシスタントが使用されて、デジタルアシスタントとそのユーザ108との間の自然言語ベースの会話を介して様々なタスクを実行し得る。会話の一部として、ユーザは、1つまたは複数のユーザ入力110をデジタルアシスタント106に提供し、デジタルアシスタント106から応答112を取得する。会話は、入力110および応答112の1つまたは複数を含み得る。これらの会話を介して、ユーザは、デジタルアシスタントによって1つまたは複数のタスクが実行されることを要求し得、それに応じて、デジタルアシスタントは、ユーザが要求したタスクを実行し、ユーザに適切な応答で応答するように構成されている。
【0032】
ユーザ入力110は、一般に自然言語形式であり、発話と呼ばれる。ユーザ発話110は、ユーザが文、質問、テキスト断片、または単一の単語を入力し、それを入力としてデジタルアシスタント106に提供する場合のように、テキスト形式であり得る。いくつかの実施形態では、ユーザ発話110は、デジタルアシスタント106への入力として提供される何らかのものをユーザが言うか話す場合のような、音声入力または会話形式であり得る。発話は通常、ユーザ108によって話される言語で行われる。たとえば、発話は、英語または何か別の言語で行われてもよい。発話が会話形式で行われる場合、会話入力は、その特定の言語のテキスト形式の発話に変換され、次いでテキスト発話はデジタルアシスタント106によって処理される。様々な会話からテキストへの処理技術が使用されてもよく、会話または音声入力をテキスト発話に変換し、次いでそれはデジタルアシスタント106によって処理される。いくつかの実施形態では、会話からテキストへの変換は、デジタルアシスタント106自体によって行われてもよい。
【0033】
テキスト発話または会話発話であってもよい発話は、断片、文、複数の文、1つまたは複数の単語、1つまたは複数の質問、前述のタイプの組み合わせなどであり得る。デジタルアシスタント106は、自然言語理解(NLU)技術を発話に適用して、ユーザ入力の意味を理解するように構成されている。発話についてのNLU処理の一部として、デジタルアシスタント106は、発話の意味を理解するための処理を実行するように構成され、これは、発話に対応する1つまたは複数の意図および1つまたは複数のエンティティを識別することを含む。発話の意味を理解すると、デジタルアシスタント106は、理解された意味または意図に応じた1つ以上のアクションまたは動作を実行してもよい。この開示の目的に関して、発話は、デジタルアシスタント106のユーザ108によって直接提供されたテキスト発話であるか、または入力会話発話をテキスト形式に変換した結果であると仮定される。ただし、これは、いかなる様式であっても限定的または制限的であることを意図されない。
【0034】
たとえば、ユーザ108の入力は、「私はピザを注文したい」のような発話を提供することによって、ピザが注文されることを要求してもよい。このような発話を受信すると、デジタルアシスタント106は、発話の意味を理解して、適切なアクションを行うように構成されている。適切なアクションは、たとえば、ユーザが注文したいピザの種類、ピザのサイズ、ピザの任意のトッピングなどについてのユーザ入力を要求する質問によってユーザに応答することを含んでもよい。デジタルアシスタント106によって提供される応答は、自然言語形式で行われてもよく、通常は入力発話と同じ言語で行われてもよい。これらの応答を生成する一環として、デジタルアシスタント106は自然言語生成(NLG)を実行してもよい。ピザを注文するユーザについて、ユーザとデジタルアシスタント106との間の会話を介して、デジタルアシスタントは、ピザの注文に必要な情報をすべて提供するようにユーザを案内し、次いで会話の終わりにピザが注文されてもよい。デジタルアシスタント106は、ピザが注文されたことを示す情報をユーザに出力することによって会話を終了してもよい。
【0035】
概念的レベルでは、デジタルアシスタント106は、ユーザから受信された発話に応じて様々な処理を実行する。いくつかの実施形態では、この処理は、処理ステップの系列またはパイプラインを含み、該処理ステップの系列またはパイプラインは、たとえば、入力発話の意味を理解するステップ(自然言語理解(NLU)と呼ばれることもある)と、発話に応じて実行されるアクションを決定するステップと、適切な場合にアクションを実行させるステップと、ユーザの発話に応じてユーザに出力される応答を生成するステップと、ユーザに応答を出力するステップと、などを含む。NLU処理は、発話の構造および意味を理解するために、受信された入力発話を構文解析することと、発話についてより理解可能な形式(たとえば、論理形式)または構造を開発するために、発話を改良および再構築することと、を含む。応答を生成することは、NLG技術を使用することを含んでもよい。
【0036】
デジタルアシスタント106のようなデジタルアシスタントによって実行されるNLU処理は、構文解析(たとえば、トークン化、見出し語化、文の品詞タグの識別、文中の固有表現の識別、文構造を表すための依存関係ツリーの生成、文の文節への分割、個々の文節の解析、前方照応の分析、チャンキングの実行など)のような様々なNLP関連処理を含み得る。特定の実施形態では、NLU処理またはその部分は、デジタルアシスタント106自体によって実行される。いくつかの他の実施形態では、デジタルアシスタント106は、他のリソースを使用してNLU処理の部分を実行してもよい。たとえば、入力発話文の構文および構造は、構文解析器、品詞タグ付け器、および/または固有表現認識器を使用して文を処理することによって識別され得る。一実施形態では、英語の場合、構文解析プログラム、品詞タグ付けプログラム、およびスタンフォード自然言語処理(NLP)グループによって提供されるもののような固有表現認識プログラムが、文構造および構文を解析するために使用される。これらは、Stanford CoreNLPツールキットの部分として提供される。
【0037】
本開示で提供された様々なサンプルは、英語での発話を示すが、これは単に例である。特定の実施形態では、デジタルアシスタント106はまた、英語以外の言語での発話を取り扱うことも可能である。デジタルアシスタント106は、異なる言語の処理を実行するように構成されているサブシステム(たとえば、NLU機能を実装する構成要素)を提供してもよい。これらのサブシステムは、NLUコアサーバからのサービスコールを使用して呼び出され得るプラグイン可能ユニットとして実装されてもよい。このことが、異なる処理順序を可能にすることを含む、NLU処理を言語ごとに柔軟で拡張可能にする。言語パックは、個々の言語に対して提供されてもよく、言語パックは、NLUコアサーバから供給され得るサブシステムのリストを登録し得る。
【0038】
図1に示すデジタルアシスタント106のようなデジタルアシスタントは、様々な異なるチャネル、たとえば、特定のアプリケーションを介して、ソーシャルメディアプラットフォームを介して、様々なメッセージングサービスおよびアプリケーション、ならびに別のアプリケーションまたはチャネルなどであって、これらに限定されないものを介して、ユーザ108に利用可能またはアクセス可能にされ得る。単一のデジタルアシスタントは、それに対して構成されたいくつかのチャネルを有することにより、同時に、異なるサービス上で実行され、およびそれらによってアクセスされ得る。
【0039】
デジタルアシスタントまたはチャットボットシステムは一般に、1つまたは複数のスキルを含むか、またはそれらと関連している。特定の実施形態では、これらのスキルは、ユーザと対話して、特定のタイプのタスク、たとえば、在庫の追跡、タイムカードの提出、経費報告書の作成、食品の注文、銀行口座の確認、予約の作成、ウィジェットの購入などを実行するように構成されている個別のチャットボット(スキルボットと呼ばれる)である。たとえば、
図1に示す実施形態については、デジタルアシスタントまたはチャットボットシステム106は、スキル116-1、116-2などを含む。本開示の目的に関して、「スキル」という用語は、「スキルボット」という用語と同義的に使用される。
【0040】
デジタルアシスタントと関連付けられた各スキルは、デジタルアシスタントのユーザがユーザとの会話を通じてタスクを完了するのに役立ち、その会話は、ユーザによって提供されるテキストまたは音声入力と、スキルボットによって提供される応答との組み合わせを含み得る。これらの応答は、ユーザへのテキストまたは音声メッセージの形式であってもよく、および/またはユーザが選択するようにユーザに提示される簡易なユーザインタフェイス要素(たとえば、選択リスト)を使用するものであってもよい。
【0041】
スキルまたはスキルボットが、デジタルアシスタントと関連付けられるか、またはそれに追加され得る様々な方法がある。場合によっては、スキルボットは企業によって開発され、次いでDABP102を使用してデジタルアシスタントに追加され得る。別の場合には、スキルボットは、DABP102を使用して開発および作成され、次いでDABP102を使用して作成されたデジタルアシスタントに追加され得る。さらに別の例では、DABP102は、広範囲のタスクに向けられた複数のスキルを提供するオンラインデジタルストア(「スキルストア」と呼ばれる)を提供する。スキルストアによって提供されるスキルはまた、様々なクラウドサービスを公開してもよい。DABP102を使用して生成されているデジタルアシスタントにスキルを追加するために、DABP102のユーザは、DABP102を介してスキルストアにアクセスし、所望のスキルを選択し、そして選択されたスキルがDABP102を使用して作成されたデジタルアシスタントに追加されることを示し得る。スキルストアからのスキルは、そのまま、または修正形式でデジタルアシスタントに追加され得る(たとえば、DABP102のユーザは、スキルストアによって提供される特定のスキルボットを選択してクローンをつくり、選択されたスキルボットにカスタマイズまたは修正を加え、次いで修正されたスキルボットを、DABP102を使用して作成されたデジタルアシスタントに追加してもよい)。
【0042】
様々な異なるアーキテクチャが、デジタルアシスタントまたはチャットボットシステムを実装するために使用されてもよい。たとえば、特定の実施形態では、DABP102を使用して作成および展開されたデジタルアシスタントは、マスターボット/チャイルド(またはサブ)ボットのパラダイムまたはアーキテクチャを使用して実装されてもよい。このパラダイムによれば、デジタルアシスタントは、スキルボットである1つまたは複数のチャイルドボットと対話するマスターボットとして実装される。たとえば、
図1に示す実施形態では、デジタルアシスタント106は、マスターボット114と、マスターボット114のチャイルドボットであるスキルボット116-1、116-2などとを備える。特定の実施形態では、デジタルアシスタント106自体は、マスターボットとして作用すると考えられる。
【0043】
マスターとチャイルドボットアーキテクチャに従って実装されたデジタルアシスタントは、デジタルアシスタントのユーザが統一されたユーザインタフェイスによって、すなわちマスターボットを介して複数のスキルと対話することを可能にする。ユーザがデジタルアシスタントと関係すると、ユーザ入力はマスターボットによって受信される。マスターボットは、次いでユーザ入力発話の意味を決定する処理を実行する。マスターボットは、次いで発話内でユーザによって要求されたタスクがマスターボット自体によって扱われ得るか否かを判断し、そうでない場合、マスターボットは、ユーザ要求を取り扱うための適切なスキルボットを選択して、選択されたスキルボットに会話をルーティングする。このことは、ユーザが共通の単一インタフェイスによってデジタルアシスタントと会話し、特定のタスクを実行するように構成されたいくつかのスキルボットを使用する機能をなお提供することを可能にする。たとえば、企業向けに開発されたデジタルアシスタントについて、デジタルアシスタントのマスターボットは、特定の機能を有するスキルボット、たとえば、顧客関係管理(CRM)に関連する機能を実行するためのCRMボット、エンタープライズリソースプランニング(ERP)に関連した機能を実行するERPボット、人的資本管理(HCM)に関連した機能を実行するHCMボットなどとインタフェイスで連結してもよい。このようにして、デジタルアシスタントのエンドユーザまたは消費者は、共通のマスターボットインタフェイスによってデジタルアシスタントにアクセスする方法を知ることだけが必要であり、舞台裏で複数のスキルボットがユーザ要求を取り扱うために提供される。
【0044】
特定の実施形態では、マスターボット/チャイルドボットインフラストラクチャにおいて、マスターボットは、スキルボットの利用可能なリストを認識するように構成されている。マスターボットは、様々な利用可能なスキルボットを識別するメタデータ、およびスキルボットごとに、スキルボットによって実行され得るタスクを含むスキルボットの能力へのアクセスを有し得る。発話の形式でユーザ要求を受信すると、マスターボットは、複数の利用可能なスキルボットから、最適にユーザ要求に対応し得るかまたはこれを処理し得る特定のスキルボットを識別または予測するように構成されている。マスターボットは、次いで発話(または発話の部分)を更なる取り扱いのためにその特定のスキルボットにルーティングする。制御は、したがってマスターボットからスキルボットまで流れる。マスターボットは複数の入力および出力チャネルをサポートし得る。特定の実施形態では、ルーティングは、1つまたは複数の利用可能なスキルボットによって実行される処理を利用して実行され得る。たとえば、以下で考察するように、スキルボットは、発話についての意図を推測し、推測された意図が、スキルボットがそれによって構成されている意図と一致するか否かを決定するように訓練され得る。したがって、マスターボットによって実行されるルーティングは、スキルボットが発話の取り扱いに適した意図によって構成されているか否かの指示をマスターボットに通信するスキルボットを含み得る。
【0045】
図1の実施形態は、マスターボット114ならびにスキルボット116-1、116-2、および116-3を備えるデジタルアシスタント106を示し、これは、限定を意図されていない。デジタルアシスタントは、デジタルアシスタントの機能を提供する様々な別の構成要素(たとえば、別のシステムおよびサブシステム)を含み得る。これらのシステムおよびサブシステムは、ソフトウェア(たとえば、コンピュータ可読媒体に記憶され、1つまたは複数のプロセッサによって実行可能なコード、命令)のみに、ハードウェアのみに、またはソフトウェアとハードウェアの組み合わせを使用する実装例のみに実装されてもよい。
【0046】
DABP102は、DABP102のユーザがデジタルアシスタントと関連付けられた1つまたは複数のスキルボットを含むデジタルアシスタントを作成することを可能にするインフラストラクチャならびに様々なサービスおよび機能を提供する。場合によっては、スキルボットは、既存のスキルボットのクローンを作成することによって、たとえば、スキルストアによって提供されるスキルボットのクローンを作成することによって作成され得る。前述のように、DABP102は、様々なタスクを実行するための複数のスキルボットを提供するスキルストアまたはスキルカタログを提供する。DABP102のユーザは、スキルストアからスキルボットのクローンを作成し得る。必要に応じて、修正またはカスタマイズが、クローンが作成されたスキルボットになされてもよい。別のいくつかの例では、DABP102のユーザは、DABP102によって提供されたツールおよびサービスを使用してスキルボットを最初から作成した。前述のように、DABP102によって提供されるスキルストアまたはスキルカタログは、様々なタスクを実行するための複数のスキルボットを提供してもよい。
【0047】
特定の実施形態では、高いレベルでは、スキルボットの作成またはカスタマイズは、
(1)新規スキルボットのための設定を構成するステップと、
(2)スキルボットに対して1つまたは複数の意図を構成するステップと、
(3)1つまたは複数の意図に対する1つまたは複数のエンティティを構成するステップと、
(4)スキルボットを訓練するステップと、
(5)スキルボットのダイアログフローを作成するステップと、
(6)必要に応じてスキルボットにカスタム構成要素を追加するステップと、
(7)スキルボットをテストするおよび展開するステップと、
を含む。
上記のステップの各々が、以下に簡単に説明される。
【0048】
(1)新しいスキルボットのための設定を構成するステップ-様々な設定がスキルボット用に構成されてもよい。たとえば、スキルボット設計者は、作成されるスキルボットの1つまたは複数の呼出し名を指定し得る。これらの呼出し名は、次いでデジタルアシスタントのユーザによって使用されて、スキルボットを明示的に呼び出し得る。たとえば、ユーザは、ユーザの発話に呼出し名を入力して、対応するスキルボットを明示的に呼び出し得る。
【0049】
(2)スキルボットに対して1つまたは複数の意図および関連付けられた例示的発話を構成するステップ-スキルボット設計者は、作成されるスキルボットに対して1つまたは複数の意図(ボット意図とも呼ばれる)を指定する。スキルボットは、次いでこれらの指定された意図に基づいて訓練される。これらの意図は、スキルボットが入力発話を推測するために訓練されるカテゴリまたはクラスを表す。発話を受信すると、訓練済みスキルボットは、発話についての意図を推測し、推測された意図は、スキルボットを訓練するために使用される事前定義された意図のセットから選択される。スキルボットは、次いでその発話に対して推測された意図に基づいて、発話に応じた適切なアクションを実行する。場合によっては、スキルボットに対する意図は、スキルボットがデジタルアシスタントのユーザに対して実行し得るタスクを表す。各意図は、意図識別子または意図名が与えられる。たとえば、銀行用に訓練済みスキルボットについて、スキルボットについて指定された意図は、「CheckBalance」、「TransferMoney」、「DepositCheck」などを含んでもよい。
【0050】
スキルボットについて定義された意図ごとに、スキルボット設計者は、意図を表し、示す1つまたは複数の例示的発話を提供してもよい。これらの例示的発話は、ユーザが意図についてスキルボットに入力してもよい発話を表すように意図されている。たとえば、CheckBalance意図については、例示的発話は、「私の普通預金残高はいくらあるか」、「私の当座預金口座にいくらあるか」、「私の口座にはいくらあるか」などを含んでもよい。したがって、典型的なユーザ発話の様々な順列を、意図に対する例示的発話として指定されてもよい。
【0051】
意図およびそれらの関連付けられた例示的発話は、スキルボットを訓練するための訓練データとして使用される。様々な異なる訓練技術が使用されてもよい。この訓練の結果として、予測モデルによる発話について推測された意図の入力および出力として発話を実行するように構成されている予測モデルが生成される。場合によっては、入力発話が、意図解析エンジンに提供され、これは、訓練済みモデルを使用して入力発話についての意図を予測または推側するように構成されている。スキルボットは、次いで推測された意図に基づいて1つまたは複数のアクションを実行してもよい。
【0052】
(3)スキルボットの1つまたは複数の意図に対してエンティティを構成するステップ-場合によっては、追加のコンテキストが、スキルボットがユーザ発話に適切に応答することを可能にするのに必要とされてもよい。たとえば、ユーザ入力発話がスキルボット内の同じ意図に分析する状況が存在してもよい。たとえば、上記の例では、「私の普通預金残高はいくらあるか」および「私の当座預金口座にはいくらあるか」の発話は両方とも、同じCheckBalance意図に分析するが、これらの発話は、異なるものを質問する異なる要求である。このような要求を明確にするために、1つまたは複数のエンティティが意図に追加される。銀行スキルボットサンプルを使用すると、「当座預金」および「普通預金」と呼ばれる値を定義するAccountTypeと呼ばれるエンティティが、スキルボットがユーザ要求を構文解析して適切に応答することを可能にすることがある。上記のサンプルでは、発話は同じ意図に収まるが、AccountTypeエンティティと関連付けられた値は、2つの発話に対して異なっている。このことが、スキルボットが2つの発話に対して、それらが同じ意図に収まるにも関わらず、場合によっては異なるアクションを実行することを可能にする。1つまたは複数のエンティティが、スキルボットについて構成された特定の意図に対して指定され得る。エンティティは、したがって意図自体にコンテキストを追加するために使用される。エンティティは、意図をより完全に記述するのに役立ち、スキルボットがユーザ要求を完了できることを可能にする。
【0053】
特定の実施形態では、2つのタイプのエンティティ、すなわち、(a)DABP102によって提供された組込みエンティティ、および(2)スキルボット設計者によって指定され得るカスタムエンティティが存在する。組込みエンティティは、広範囲の様々なボットで使用され得る汎用エンティティである。組込みエンティティの例は、時間、日付、住所、番号、電子メールアドレス、期間、繰返し期間、通貨、電話番号、URLなどに関連するエンティティを含むが、これらに限定されない。カスタムエンティティは、よりカスタマイズされたアプリケーションに使用される。たとえば、銀行スキルについて、AccountTypeエンティティが、小切手、貯蓄、クレジットカードなどのキーワードに対するユーザ入力をチェックすることによって様々な銀行取引を可能にするスキルボット設計者によって定義されてもよい。
【0054】
(4)スキルボットを訓練するステップ-スキルボットは、発話構文解析の形式でユーザ入力を受信し、そうでなければ受信された入力を処理し、そして受信されたユーザ入力に関連する意図を識別または選択するように構成されている。上記のように、スキルボットは、このために訓練される必要がある。特定の実施形態では、スキルボットは、スキルボットについて構成された意図および意図と関連付けられた例示的発話(集合的に、訓練データ)に基づいて訓練され、その結果、スキルボットは、ユーザ入力発話をその構成された意図のうちの1つに収め得る。特定の実施形態では、スキルボットは、訓練データを使用して訓練済み予測モデルを使用し、スキルボットはユーザが何を言っているか(または、場合によっては言おうとしているか)を識別することを許容する。DABP102が様々な異なる訓練技術を提供し、該訓練技術は、様々な機械学習ベース訓練技術、ルールベース訓練技術、および/またはそれらの組み合わせを含む、スキルボット設計者がスキルボットを訓練するために使用し得る。特定の実施形態では、訓練データの一部(たとえば、80%)がスキルボットモデルの訓練に使用され、別の部分(たとえば、残りの20%)がモデルをテストまたは検証するために使用される。訓練されると、訓練済みモデル(訓練済みスキルボットとも呼ばれることもある)を使用して、ユーザ発話を取り扱って応答し得る。場合によっては、ユーザの発話が単一の回答のみを必要とし、それ以上の会話を必要としない質問であってもよい。このような状況を取り扱うために、Q&A(質問と回答)意図がスキルボットについて定義されてもよい。このことが、スキルボットがダイアログ定義を更新することを必要とせずに、ユーザ要求に対する応答を出力することを可能にする。Q&A意図は、通常の意図と同様の方式で作成される。Q&A意図についてのダイアログフローは、通常の意図についてのダイアログフローとは異なり得る。
【0055】
(5)スキルボットに対してダイアログフローを作成するステップ-スキルボットについて指定されたダイアログフローは、スキルボットについてのさまざまな意図が、受信したユーザ入力に応じて解決されるときに、スキルボットがどのように反応するかについて記述する。ダイアログフローは、スキルボットが、たとえば、スキルボットがユーザ発話に応答する方法、スキルボットがユーザに入力を促す方法、スキルボットがデータを返す方法を実行する動作またはアクションを定義する。ダイアログフローは、スキルボットが従うフローチャートのようなものである。スキルボット設計者は、マークダウン言語のような言語を使用してダイアログフローを指定する。特定の実施形態では、OBotMLと呼ばれるYAMLのバージョンが使用されて、スキルボットについてダイアログフローを指定してもよい。スキルボットについてのダイアログフロー定義は、会話自体についてのモデルとして作用し、スキルボット設計者にスキルボットとスキルボットがサービスを提供するユーザとの間の対話を編成させる。
【0056】
特定の実施形態では、スキルボットについてのダイアログフロー定義は、
(a)コンテキストセクション、
(b)デフォルト遷移セクション、
(c)状態セクション、
という次の3つのセクションを含む。
【0057】
コンテキストセクション-スキルボット設計者は、コンテキストセクション内の会話フローで使用される変数を定義し得る。コンテキストセクション内で名前を付けてもよい別の変数は、誤差取り扱いのための変数、組み込みまたはカスタムエンティティのための変数、スキルボットがユーザ選好を認識して保持することを可能にするユーザ変数などを含むが、これらに限定されない。
【0058】
デフォルト遷移セクション-スキルボットのための遷移は、ダイアログフロー状態セクションまたはデフォルト遷移セクション内で定義され得る。デフォルト遷移セクション内で定義された遷移は、フォールバックとして作用し、状態内で定義された適用可能な遷移がない場合、または状態遷移を始動させるのに必要な条件が満たされない場合に始動される。デフォルト遷移セクションが使用されて、スキルボットが予期しないユーザアクションを適切に取り扱うことを許容するルーティングを定義し得る。
【0059】
状態セクション-ダイアログフローおよびその関連付けられた動作は、ダイアログフロー内のロジックを管理する一連の一時的な状態として定義される。ダイアログフロー定義内の各状態ノードは、ダイアログ内のその時点で必要とされる機能を提供する構成要素の名前を付ける。したがって、状態は構成要素の周りに構築される。状態は、構成要素固有の特性を含み、構成要素実行後に始動される別の状態への遷移を定義する。
【0060】
特殊な場合のシナリオは、状態セクションを使用して取り扱われてもよい。たとえば、デジタルアシスタント内の第2スキル内で何かを行うために、現在行っている第1スキルを一時的に離れるという選択をユーザに提供したい場合がある。たとえば、ユーザがショッピングスキルとの会話を行っている場合(たとえば、ユーザが購入についていくつかの選択を行った場合)、ユーザは銀行スキルにジャンプすることを望むことがあり(たとえば、ユーザは、自分が購入するのに十分な金銭を有することを確認することを望むことがあり)、次いでショッピングスキルに戻ってユーザの注文を完了する。これに対処するために、第1スキルにおけるアクションは、同じデジタルアシスタント内の第2の異なるスキルとの対話を開始し、次いで元のフローに戻るように構成され得る。
【0061】
(6)カスタム構成要素をスキルボットに追加するステップ-上述したように、スキルボットのためのダイアログフローで指定された状態が、その状態に対応するのに必要な機能を提供する構成要素に名前を付ける。構成要素が、スキルボットが機能を実行することを可能にする。特定の実施形態では、DABP102は、広範囲の機能を実行するために事前構成された構成要素のセットを提供する。スキルボット設計者は、これらの事前構成された構成要素のうちの1つまたは複数を選択して、スキルボットのダイアログフロー内の状態とそれらを関連付け得る。スキルボット設計者は、DABP102によって提供されるツールを使用してカスタムのまたは新しい構成要素を作成して、カスタム構成要素をスキルボットのダイアログフロー内の1つまたは複数の状態と関連付け得る。
【0062】
(7)スキルボットをテストおよび展開するステップ-DABP102は、スキルボット設計者が開発されているスキルボットをテストすることを可能にするいくつかの特徴を提供する。スキルボットは、次いで展開されて、デジタルアシスタント内に含まれ得る。
【0063】
上記の説明がスキルボットを作成する方法を説明しているが、同様の技術がまた使用されて、デジタルアシスタント(またはマスターボット)を作成してもよい。マスターボットまたはデジタルアシスタントレベルにおいて、組込みシステム意図が、デジタルアシスタントのために構成されてもよい。これらの組込みシステム意図が使用されて、デジタルアシスタントと関連付けられたスキルボットを呼び出すことなく、デジタルアシスタント自体(すなわち、マスターボット)が取り扱い得る一般的なタスクを識別する。マスターボットについて定義されたシステム意図の例は、(1)終了:ユーザがデジタルアシスタント内の現在の会話またはコンテキストを終了することを望む信号を送るときに適用される。(2)ヘルプ:ユーザが支援または方向付けを求めるときに適用される。(3)分析されない意図:終了およびヘルプ意図とうまく一致しないユーザ入力に適用される。デジタルアシスタントはまた、デジタルアシスタントと関連付けられた1つまたは複数のスキルボットに関する情報を記憶する。この情報は、マスターボットが発話を取り扱うための特定のスキルボットを選択することを可能にする。
【0064】
マスターボットまたはデジタルアシスタントレベルでは、ユーザがフレーズまたは発話をデジタルアシスタントに入力すると、デジタルアシスタントは、発話および関連する会話をルーティングする方法を決定する処理を実行するように構成されている。デジタルアシスタントは、ルールベース、AIベース、またはそれらの組み合わせであり得るルーティングモデルを使用してこれを決定する。デジタルアシスタントは、ルーティングモデルを使用して、ユーザ入力発話に対応する会話が、取り扱いのために特定のスキルにルーティングされるべきか、組込みシステム意図に従ってデジタルアシスタントまたはマスターボット自体によって取り扱われるべきか、あるいは現在の会話フロー内では別の状態として扱われるべきか否かを決定する。
【0065】
特定の実施形態では、この処理の一部として、デジタルアシスタントは、ユーザ入力発話がその呼出し名を使用してスキルボットを明示的に識別するか否かを決定する。呼出し名がユーザ入力内に存在する場合、その呼出し名に対応するスキルボットの明示的な呼出しとして扱われる。このようなシナリオでは、デジタルアシスタントは、更なる取り扱いのために明示的に呼び出されたスキルボットにユーザ入力をルーティングしてもよい。特定のまたは明示的な呼出しがない場合、特定の実施形態では、デジタルアシスタントは、受信されたユーザ入力発話を評価し、システム意図およびデジタルアシスタントと関連付けられたスキルボットの信頼スコアを計算する。スキルボットまたはシステム意図について計算されたスコアは、ユーザ入力がスキルボットが実行するように構成されているタスクを示している、またはシステム意図を表している可能性を表している。閾値(たとえば、信頼閾値ルーティングパラメータ)を超える、関連付けられ計算された信頼スコアを有する任意のシステム意図またはスキルボットが、さらなる評価の候補として選択される。デジタルアシスタントは、次いで識別された候補から、ユーザ入力発話の更なる取り扱いのための特定のシステム意図またはスキルボットを選択する。特定の実施形態では、1つまたは複数のスキルボットが候補として識別された後に、それらの候補スキルと関連付けられた意図が、(スキルごとの意図モデルに従って)評価され、信頼スコアが意図ごとに決定される。一般に、閾値(たとえば、70%)を超える信頼スコアを有する任意の意図が、候補意図として扱われる。特定のスキルボットが選択される場合、ユーザ発話が更なる処理のためにそのスキルボットにルーティングされる。システム意図が選択される場合、1つまたは複数のアクションが、選択されたシステム意図に従ってマスターボット自体によって実行される。
【0066】
図2は、特定の実施形態に従うマスターボット(MB)システム200の簡略化ブロック図である。MBシステム200は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアの組み合わせに実装され得る。MBシステム200は、前処理サブシステム210、複数意図サブシステム(MIS)220、明示的呼出しサブシステム(EIS)230、スキルボット呼出し器240、およびデータストア250を含む。
図2に示すMBシステム200は、マスターボット内の構成要素の配列の一例にすぎない。当業者であれば、多くの可能な変形例、代替例、および修正例を認識するであろう。たとえば、いくつかの実装形態では、MBシステム200は、
図2に示すものよりも多いかまたは少ないシステムまたは構成要素を有してもよく、2つ以上のサブシステムを組み合わせてもよく、またはサブシステムの異なる構成または配列を有してもよい。
【0067】
前処理サブシステム210は、ユーザから発話「A」202を受信し、言語検出器212および言語構文解析プログラム214によって発話を処理する。上記のように、発話は、音声またはテキストを含む様々な方式で提供され得る。発話202は、文の断片、完全な文、複数の文などであり得る。発話202は、句読点を含み得る。たとえば、発話202が音声として提供される場合、前処理サブシステム210は、結果のテキスト内に句読点、たとえば、カンマ、セミコロン、ピリオドなどを挿入する音声テキストコンバータ(図示せず)を使用して、音声をテキストに変換してもよい。
【0068】
言語検出器212は、発話202のテキストに基づいて発話202の言語を検出する。発話202が取り扱われる方法は、各言語が独自の文法および意味論を有するので、言語に依存する。発話の構文および構造を解析するときに、言語同士の間の違いが考慮される。
【0069】
言語構文解析プログラム214は、発話202を構文解析して、発話202内の個々の言語単位(たとえば、単語)について品詞(POS)タグの部分を抽出する。POSタグは、たとえば、名詞(NN)、代名詞(PN)、動詞(VB)などを含む。言語構文解析プログラム214はまた、発話202の言語単位をトークン化し(たとえば、各単語を別個のトークンに変換するために)、単語を見出語化してもよい。補題は、辞書内で表されるような単語のセットの主要形式である(たとえば、「run」は、run、runs、ran、runningなどの補題である)。言語構文解析プログラム214が実行し得る別のタイプの前処理が、複合表現のチャンク化、たとえば、「credit」と「card」とを単一の表現「credit_card」に組み合わせることを含む。言語構文解析プログラム214はまた、発話202内の単語同士の間の関係を識別してもよい。たとえば、いくつかの実施形態では、言語構文解析プログラム214が、発話のどの部分(たとえば、特定の名詞)が直接目的語であるか、発話のどの部分が前置詞であるかなどを示す依存関係ツリーを生成する。言語構文解析プログラム214によって実行された処理の結果は、抽出情報205を形成し、発話202自体と一緒にMIS220への入力として提供される。
【0070】
上記のように、発話202は、複数の文を含み得る。複数の意図および明示的な呼出しを検出するという目的のために、発話202は、それが複数の文を含む場合でも、単一の単位として扱われ得る。しかしながら、特定の実施形態では、たとえば、前処理サブシステム210によって、前処理が実行されて、複数の意図解析および明示的な呼出し解析のために複数の文の中から単一の文を識別し得る。一般に、MIS220およびEIS230によって生成された結果は、発話202が個々の文のレベルで処理されるか、または複数の文を含む単一の単位として処理されるか否かに関係なく実質的に同じである。
【0071】
MIS220は、発話202が複数の意図を表すか否かを決定する。MIS220が発話202内での複数の意図の存在を検出し得るが、MIS220によって実行される処理は、発話202の意図がボットに対して構成された任意の意図と一致するか否かを決定することを含まない。その代わりに、発話202の意図がボットの意図と一致するか否かを決定するための処理が、MBシステム200の意図分類器242によって、またはスキルボットの意図分類器(たとえば、
図3の実施形態に示されるような)によって実行され得る。MIS220によって実行される処理は、発話202を取り扱い得るボット(たとえば、特定のスキルボットまたはマスターボット自体)が存在することを前提とする。そのために、MIS220によって実行される処理は、どのようなボットがチャットボットシステム(たとえば、マスターボットによって登録されたスキルボットのアイデンティティ)内に存在することについての知識、またはどのような意図が特定のボットに設定されているかについての知識を必要としない。
【0072】
発話202が複数の意図を含むことを決定するために、MIS220は、データストア250内のルールのセット252から1つまたは複数のルールを適用する。発話202に適用されるルールは、発話202の言語に依存し、および複数の意図の存在を示す文パターンを含んでもよい。たとえば、文パターンは、文の2つの部分を結合するなど等位接続詞(たとえば、接続詞)を含んでもよく、両方の部分は別個の意図に対応する。発話202が文パターンと一致する場合、発話202が複数の意図を表すことが推測され得る。複数の意図を有する発話が、必ずしも異なる意図(たとえば、異なるボットに向けられた意図、または同じボット内の異なる意図に向けられた意図)を有するわけではないことに留意されたい。その代わりに、発話は、同じ意図の別個の例、たとえば、「支払いアカウントXを使用してピザを注文し、次いで支払いアカウントYを使用してピザを注文する」を有し得る。
【0073】
発話202が複数の意図を表すことを決定することの一環として、MIS220はまた、発話202のどの部分が各意図と関連付けられるかを決定する。MIS220は、複数の意図を含む発話において表された意図ごとに、元の発話の代わりに別個の処理のための新しい発話、たとえば、
図2に示すような発話「B」206および発話「C」208を構成する。したがって、元の発話202は、一度に1つずつ取り扱われる2つ以上の別個の発話に分割され得る。MIS220は、抽出情報205を使用して、および/または発話202自体の解析から、2つ以上の発話のうちどれが最初に取り扱われるべきかを決定する。たとえば、MIS220は、発話202が、特定の意図が最初に取り扱われるべきであることを示す標識語を含むと決定してもよい。この特定の意図に対応する新しく形成された発話(たとえば、発話206または発話208のうちの1つ)は、EIS230による更なる処理のために最初に送信されることになる。最初の発話によって始動させられた会話が終了した(または、一時的に中止された)後に、次の最優先の発話(たとえば、発話206または発話208のうちの他方)が、次いで処理のためにEIS230に送信され得る。
【0074】
EIS230は、それが受信する発話(たとえば、発話206または発話208)がスキルボットの呼出し名を含むか否かを決定する。特定の実施形態では、チャットボットシステム内の各スキルボットは、そのスキルボットをチャットボットシステム内の別のスキルボットから区別する固有の呼出し名が割り当てられる。呼出し名のリストは、データストア250内のスキルボット情報254の一部として維持され得る。発話は、発話が呼出し名と一致する単語を含むとき、明示的な呼出しであるとみなされる。ボットが明示的に呼び出されない場合、EIS230によって受信された発話は、非明示的呼出し発話234とみなされ、マスターボットの意図分類器(たとえば、意図分類器242)に入力されて、発話を取り扱うのにどのボットを使用するかを決定する。場合によっては、意図分類器242は、マスターボットが非明示的に呼び出す発話を取り扱うべきであると決定することになる。別の例では、意図分類器242は、取り扱いのために発話をルーティングすべきスキルボットを決定することになる。
【0075】
EIS230によって提供される明示的呼出し機能は、いくつかの利点を有する。それは、マスターボットが実行する必要がある処理の量を低減し得る。たとえば、明示的な呼出しがある場合、マスターボットは、意図分類解析(たとえば、意図分類器242を使用する)を行う必要がないことがあり、またはスキルボットを選択するために縮小された意図分類解析を行う必要があることもある。したがって、明示的呼出し解析が、意図分類解析に頼ることなく、特定のスキルボットの選択を可能にすることがある。
【0076】
また、複数のスキルボット間で機能が重複する状況が存在することがある。これは、たとえば、2つのスキルボットによって取り扱われる意図が、重複している場合、または互いに非常に近い場合に発生することがある。このような状況では、マスターボットが、意図分類解析のみに基づいて複数のスキルボットのうちのどれを選択するべきかを識別することが困難になることがある。このようなシナリオでは、明示的な呼出しが、使用されるべき特定のスキルボットを明確にする。
【0077】
EIS230は、発話が明示的な呼出しであることを決定するのに加えて、発話のなんらかの部分が明示的に呼び出されるスキルボットへの入力として使用されるべきか否かを決定する責任を負う。特に、EIS230は、発話の部分が呼出しと関連付けられるか否かを決定し得る。EIS230は、発話の解析および/または抽出情報205の解析によるこの決定を実行し得る。EIS230は、EIS230によって受信された発話全体を送信する代わりに、呼出しと関連付けられていない発話の部分を、呼び出されたスキルボットに送信し得る。場合によっては、呼び出されたスキルボットへの入力は、呼出しと関連付けられた発話の任意の部分を除去することによって容易に形成される。たとえば、「ピザボットを使用してピザを注文したい」は、「ピザを注文したい」と短縮され得るが、その理由は、「ピザボットを使用して」は、ピザボットの呼出しに関連しているが、ピザボットによって実行されるべき処理とは無関係であるからである。場合によっては、EIS230は、たとえば完全な文を形成するために、呼び出されたボットに送信されるべき部分を再フォーマットしてもよい。したがって、EIS230は、明示的な呼出しがあることを決定するだけでなく、明示的な呼出しがある場合にスキルボットに何を送信するべきかを決定する。場合によっては、呼び出されているボットに入力するべきテキストがない場合がある。たとえば、発話が「ピザボット」であった場合、EIS230は、ピザボットが呼び出されていると決定し得るが、ピザボットによって処理されるべきテキストは存在しない。このようなシナリオでは、EIS230は、送信するものが何もないことをスキルボット呼出し部240に示してもよい。
【0078】
スキルボット呼出し部240は、様々な方式でスキルボットを呼び出す。たとえば、スキルボット呼出し部240は、明示的な呼出しの結果として特定のスキルボットが選択されたという指示235の受信に応じて、ボットを呼び出し得る。指示235は、明示的に呼び出されたスキルボットに対する入力と一緒にEIS230によって送信され得る。このシナリオでは、スキルボット呼出し部240は、明示的に呼び出されたスキルボットまで会話の制御を向けることになる。明示的に呼び出されたスキルボットは、入力をスタンドアロン発話として扱うことによって、EIS230からの入力への適切な応答を決定することになる。たとえば、応答は、特定のアクションを実行すること、または特定の状態で新しい会話を開始することであり得るが、新しい会話の初期状態は、EIS230から送信された入力に依存する。
【0079】
スキルボット呼出し部240がスキルボットを呼び出し得る別の方式は、意図分類器242を使用した暗黙的呼出しによるものである。意図分類器242は、機械学習および/またはルールベース訓練技術を使用して訓練されることにより、発話が特定のスキルボットが実行するように構成されているタスクを表しているという可能性を決定し得る。意図分類器242は、異なるクラスにおいて、スキルボットごとに1つのクラスにおいて訓練される。たとえば、新しいスキルボットがマスターボットに登録されるたびに、その新しいスキルボットと関連付けられた例示的発話のリストが使用されることにより、意図分類器242を訓練して、特定の発話が、新しいスキルボットが実行し得るタスクを表しているという可能性を決定し得る。この訓練の結果として作成されたパラメータ(たとえば、機械学習モデルのパラメータに対する値のセット)は、スキルボット情報254の部分として記憶され得る。
【0080】
特定の実施形態では、意図分類器242は、本明細書でさらに詳細に説明するように、機械学習モデルを使用して実装される。機械学習モデルの訓練は、様々なスキルボットと関連付けられた例示的発話から発話の少なくともサブセットを入力することにより、機械学習モデルの出力として、どのボットが任意の特定の訓練発話を取り扱うのに適切なボットであるかについての推論を生成することがある。訓練発話ごとに、その訓練発話に使用するべき適切なボットの指示が、グラウンドトゥルース情報として提供されてもよい。機械学習モデルの挙動は、生成された推論とグランドトゥルース情報との間の差異を最小限に抑えるように(たとえば、逆伝播によって)適応させられ得る。
【0081】
特定の実施形態では、意図分類器242は、マスターボットに登録されたスキルボットごとに、スキルボットが発話(たとえば、EIS230から受信された非明示的呼出し発話234)を取り扱い得るという可能性を示す信頼スコアを決定する。意図分類器242はまた、構成された各システムレベル意図(たとえば、ヘルプ、終了)についての信頼スコアを決定してもよい。特定の信頼スコアが1つまたは複数の条件を満たす場合、スキルボット呼出し部240は、特定の信頼スコアと関連付けられたボットを呼び出すことになる。たとえば、閾値信頼スコア値を満たす必要がある場合がある。したがって、意図分類器242の出力245は、システム意図の識別または特定のスキルボットの識別のいずれかである。いくつかの実施形態では、閾値信頼スコア値を満たすことに加えて、信頼スコアは、次の最高信頼スコアを一定の勝率だけ超過しなければならない。このような条件を課すことが、複数のスキルボットの信頼スコアがそれぞれ閾値信頼スコア値を超過する場合、特定のスキルボットへのルーティングを可能にすることがある。
【0082】
信頼スコアについての評価に基づいてボットを識別した後に、スキルボット呼出し部240は、識別されたボットに処理を引き渡す。システム意図の場合、識別されたボットがマスターボットである。そうでなければ、識別されたボットがスキルボットである。さらに、スキルボット呼出し部240は、識別されたボットに対する入力247として何を提供するかを決定することになる。上記のように、明示的な呼出しの場合、入力247は、呼出しと関連付けられていない発話の部分に基づいてもよく、または入力247が何もなくてもよい(たとえば、空の文字列)。暗黙的な呼出しの場合、入力247は発話全体であり得る。
【0083】
データストア250は、マスターボットシステム200の様々なサブシステムによって使用されるデータを記憶する1つまたは複数のコンピューティングデバイスを備える。上記説明のように、データストア250は、ルール252およびスキルボット情報254を含む。ルール252は、たとえば、発話が複数の意図、および複数の意図を表す発話を分割する方法を表す場合に、MIS220によって、決定するためのルールを含む。ルール252はさらに、スキルボットを明示的に呼び出す発話のどの部分をスキルボットに送信するべきか、EIS230によって、決定するためのルールを含む。スキルボット情報254は、チャットボットシステムにおけるスキルボットの呼出し名、たとえば、特定のマスターボットに登録されたすべてのスキルボットの呼出し名のリストを含む。スキルボット情報254はまた、チャットボットシステム内のスキルボットごとに信頼スコアを決定するために、意図分類器242によって使用される情報、たとえば、機械学習モデルのパラメータを含み得る。
【0084】
図3は、特定の実施形態に従うスキルボットシステム300の簡略化ブロック図である。スキルボットシステム300は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアの組み合わせで実装され得るコンピューティングシステムである。
図1に示す実施形態のような特定の実施形態では、スキルボットシステム300が使用されて、デジタルアシスタント内に1つまたは複数のスキルボットを実装し得る。
【0085】
スキルボットシステム300は、MIS310、意図分類器320、および会話マネージャ330を含む。MIS310は、
図2のMIS220に類似し、同様の機能を提供し、該機能は、データストア350内のルール352を使用して、(1)発話が複数の意図を表すか否か、そうである場合、(2)発話を複数の意図のうちの意図ごとに別個の発話に分割する方法を決定するように動作可能であることを含む。特定の実施形態では、複数の意図を検出するために、および発話を分割するためにMIS310によって適用されるルールは、MIS220によって適用されるルールと同じである。MIS310は、発話302および抽出情報304を受信する。抽出情報304は、
図1における抽出情報205に類似し、言語構文解析プログラム214またはスキルボットシステム300にローカルな言語構文解析プログラムを使用して生成され得る。
【0086】
意図分類器320は、
図2の実施形態に関連して上記で考察され、本明細書でさらに詳細に説明される意図分類器242と同様の方法で訓練され得る。たとえば、特定の実施形態では、意図分類器320は、機械学習モデルを使用して実装される。意図分類器320の機械学習モデルは、特定のスキルボットと関連付けられた例示的発話の少なくともサブセットを訓練発話として使用して、特定のスキルボットについて訓練される。訓練発話ごとのグラウンドトゥルースは、訓練発話と関連付けられた特定のボット意図であることがある。
【0087】
発話302は、ユーザから直接受信され得るか、またはマスターボットによって供給され得る。発話302が、たとえば、
図2に示す実施形態におけるMIS220およびEIS230による処理の結果として、マスターボットによって供給される場合、MIS310がバイパスされることにより、MIS220によって既に実行された処理の繰返しを回避し得る。しかし、発話302が、たとえば、スキルボットへのルーティング後に生じる会話中に、ユーザから直接受信される場合、MIS310は、発話302を処理して、発話302が複数の意図を表すか否かを決定し得る。そうである場合、MIS310は、1つまたは複数のルールを適用して、発話302を意図ごとに別個の発話、たとえば、発話「D」306と発話「E」308とに分割する。発話302が複数の意図を表さない場合、MIS310は、意図分類のために発話302を意図分類器320に転送し、発話302を分割することはない。
【0088】
意図分類器320は、受信された発話(たとえば、発話306または308)をスキルボットシステム300と関連付けられた意図に適合させるように構成されている。上記の説明のように、スキルボットは、1つまたは複数の意図で構成され得、各意図は、意図と関連付けられ、分類器を訓練することに使用される少なくとも1つの例示的発話を含む。
図2の実施形態では、マスターボットシステム200の意図分類器242は、個々のスキルボットについての信頼スコアおよびシステム意図についての信頼スコアを決定するように訓練される。同様に、意図分類器320は、スキルボットシステム300と関連付けられた意図ごとに信頼スコアを決定するように訓練され得る。意図分類器242によって実行される分類が、ボットレベルにおけるものであるのに対し、意図分類器320によって実行される分類は、意図レベルのものであり、そのため、きめがより細かい。意図分類器320は、意図情報354へのアクセスを有する。意図情報354は、スキルボットシステム300と関連付けられた意図ごとに、意図の意味を表し、図示し、通常はその意図によって実行可能なタスクと関連付けられている発話のリストを含む。意図情報354は、この発話リストに基く訓練の結果として作成されたパラメータをさらに含み得る。
【0089】
会話マネージャ330は、意図分類器320の出力として、意図分類器320に入力された発話に最もよく適合するときに、意図分類器320によって識別された特定の意図の指示322を受信する。場合によっては、意図分類器320は、適合を判断し得ない。たとえば、発話がシステム意図または異なるスキルボットの意図に向けられている場合、意図分類器320によって計算される信頼スコアは、閾値信頼スコア値を下回ることがあり得る。このことが生じると、スキルボットシステム300は、取り扱いのために、たとえば、異なるスキルボットにルーティングするために、発話をマスターボットに照会してもよい。しかしながら、意図分類器320がスキルボット内の意図を識別することに成功した場合、会話マネージャ330は、ユーザとの会話を開始することになる。
【0090】
会話マネージャ330によって開始された会話は、意図分類器320によって識別された意図に特有の会話である。たとえば、会話マネージャ330は、識別された意図に対するダイアログフローを実行するように構成された状態機械を使用して実装されてもよい。状態機械は、デフォルトの開始状態(たとえば、追加の入力なしで意図が呼び出されるときに対する)と1つまたは複数の追加の状態を含み得、各状態は、それと関連付けられて、スキルボットによって実行されるべきアクション(たとえば、購入トランザクションを実行する)および/またはユーザに表示されるべきダイアログ(たとえば、質問、応答)を有する。したがって、会話マネージャ330は、意図を識別する指示322を受信するとアクション/ダイアログ335を決定し得、そして会話中に受信された後続の発話に応じて追加のアクションまたはダイアログを決定し得る。
【0091】
データストア350は、スキルボットシステム300の様々なサブシステムによって使用されるデータを記憶する1つまたは複数のコンピューティングデバイスを備える。
図3に示すように、データストア350は、ルール352および意図情報354を含む。特定の実施形態では、データストア350は、マスターボットまたはデジタルアシスタントのデータストア、たとえば、
図2のデータストア250に統合され得る。
【0092】
バリアント不一致攻撃(VIA)
本明細書で説明するように、VIAの背後にある考え方は単純なロジックであり、所与の入力は1つだけ正しい予測を有する、すなわち、モデルが2つの異なる予測を作成する場合、それらのうちの少なくとも1つは間違っているはずであると仮定することである。この単純なロジックは、入力と、その効用保存バリアントを同じ入力セットとして扱うように拡張され得、バリアントが効用保存方法で生成されるとすると、モデルは入力セット内のすべての例に対して一貫していることが期待され得る。
【0093】
たとえば、訓練済み教師あり機械学習モデルMが取得され、次いでMが一意の期待予測を有する新しいサンプルx1が供給されると仮定する。Mは、このx1に対して出力y1を生成する。続いて、x1は、元の「意味」が変更され得ないという制約とともに修正されて、新しいサンプルx2を作成する。言い換えると、x2は、x1の効用保存バリアントである。この構造を考えると、x2の対応する期待予測は、x1についての予測とまったく同じになるはずである。その後に、x2をMに渡し、出力y2を受け取る。ここで、2つの予測y1およびy2が実際に異なることが観察された場合、予測のうちの少なくとも1つが間違っているはずである!ここで、x1とx2の差は、「偏差」であり、y1とy2の潜在的差は、「不一致」である。基本的に、入力の効用保存バリアントに対する不一致出力は、敵対的攻撃パラダイムにうまく適合する。このロジックの正式な説明は、以下のアルゴリズム1において提供される。
入力:
M:敵対的攻撃の対象となる、事前訓練済みの教師あり機械学習モデル。
X:対応するラベルのない入力サンプルのセット。
出力:
潜在的敵対的サンプルのペアのセット
ステップ:
1.Initialize output list:adversarial_examples=[]
2.For each xi in X:
3. modified_pairs=modify_without_changing_expected_label(xi)
4. For xi_modified1,xi_modified2 in modified_pairs:
5. //xi_modified1 and xi_modified2 share the same expected label,which
6. //is unknown to the model M
7. yi_modified1=M(xi_modified1)
8. yi_modified2=M(xi_modified2)
9. if yi_modified1!=(does not equal)yi_modified2:
10. Add(xi_modified1,xi_modified2)into adversarial_examples
11.Return adversarial_examples
アルゴリズム1は、VIアルゴリズムの基本バージョンである。ただし、いくつかの異なるバリアントが実際に使用し得ることを理解されたい。
【0094】
いくつかの実施形態では、VIアルゴリズム(たとえば、アルゴリズム1)は、不一致をテストするために、入力サンプルのセットからのmodified_pairs内のすべてのサンプルに対して実行される。代替実施形態では、VIアルゴリズム(たとえば、アルゴリズム1)は、潜在的敵対的サンプルのペアが見つけられるとすぐに停止され、これにより、ランニングコストが削減されることがあるが、同時に、良好な敵対的サンプルのペアの見逃しを生じさせることもある。このオプションは、入力サンプルの巨大な攻撃セット取り扱う場合に、特に有益であることがある。理解されるように、敵対的攻撃にVIアルゴリズムを使用するいずれの技術も、入力サンプルのセットが関連付けられたラベルを有することを必要としない。機械学習において、データのラベル付けは、生データ(画像、テキストファイル、ビデオなど)を識別し、機械学習モデルがそれから学習し得るようにコンテキストを提供する1つまたは複数の意味のある、情報を与えるラベルを追加する(注釈を付ける)というプロセスである。たとえば、ラベルは、写真が鳥または車が含むか否か、どの単語が音声録音内で発声されたか、またはX線が腫瘍を含むか否かを示すグラウンドトゥルースであってもよい。データのラベル付けは通常、コンピュータビジョン、自然言語処理、および音声認識を含む様々な使用事例に必要とされる。ただし、VIアルゴリズムと同様にラベルを必要としないことは、より多くの入力が提供される限り、無制限の数の潜在的敵対的サンプルを見つけることを可能にし、このことは、テキストデータについて満たされることが特に容易である。
【0095】
出力リスト(潜在的敵対的サンプルのペアのセット)において、各要素は、2つの潜在的敵対的サンプルの候補を含むタプルである。要素の両方が被害者モデルMを騙すことは保証され得ないけれども、要素のうちの少なくとも1つが被害者モデルMに誤った予測を与えさせることがVIアルゴリズムによって決定される。また、ほとんどの場合、特に自然言語または画像認識タスクの場合、ペアの各々における任意の要素が真の敵対的サンプルであるか否かをユーザが手動で確認するのは容易である。
【0096】
2つの関連する技術は、LIME(Marco Tulio Ribeiro,Sameer Singh,and Carlos Guestrin.“Why should i trust you?:Explaining the predictions of any classifier”.In:Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining.ACM.2016,pp.1135-1144)およびAnchors(Marco Tulio Ribeiro,Sameer Singh,and Carlos Guestrin.2018.Anchors:High-precision modelagnostic explanations.In AAAI Conference on Artificial Intelligence)である。両方の技術は、最初に元の入力に摂動を加え、それらは、その最上部にローカル代理線形モデル(LIME)を構築するか、またはブラックボックス方式でモデルを説明するためのいくつかのルール(Anchors)を構築するかのいずれかである。本明細書で説明するVIアルゴリズム(たとえば、アルゴリズム1)は、潜在的敵対的サンプル候補のペア(アルゴリズム1内の「modified_pairs」)の創出に関して同様のアイデアを共有するが、ただし、VIアルゴリズムは、潜在的候補の出力が元の入力と異なるか否かをテストして、その後にLIMEまたはAnchorと完全に異なる実際の敵対的サンプルをすべて除外しようとする。したがって、VIアルゴリズムは、事前にラベル付けされた入力を必要とするという制約を解放し、それが、敵対的攻撃アルゴリズムの検索能力を大幅に向上させることがある。
【0097】
アルゴリズム1に関して、行3のmodify_without_changing_expected_label関数は、元の入力サンプルが効用保存方法でどのように修正されるかを示す。この修正技術のステップは、VIアルゴリズムの様々なアプリケーションについて、特に視覚、テキスト、画像処理などのような様々なモダリティにわたってアプリケーションについて異なることがある。これはまた、ユーザが、効用保存バリアントを創出するためのいくつかの直観的な方法においてVIアルゴリズムを修正し得る場所でもある。このようなアプローチについての詳細な説明は、実施例1および実施例2に関して本明細書で提供される。
【0098】
様々な実施形態に実装されるシステムおよび方法は、以下の実施例を参照することによってよりよく理解されることがある。
【0099】
実施例1-画像認識モデルへの攻撃
この実験で使用されるデータセットは、手書き数字のMNISTデータベース(Y.LeCun,L.Bottou,Y.Bengio,and P.Haffner.“Gradient-based learning applied to document recognition.”Proceedings of the IEEE,86(11):2278-2324,November 1998)であり、これは、訓練用の60,000のサンプルとテスト用の10,000のサンプルを含む。すべてのサンプルは、0乃至9である手書きの単一数字の正方28×28ピクセルのグレースケール画像である。
【0100】
畳込みニューラルネットワーク(CNN)が、この画像認識タスクについて訓練され、目標は、CNNモデルを騙し得るいくつかの潜在的敵対的サンプルを自動的に検出する方法を見つけることであった。CNNのアーキテクチャは、以下のようである。
【0101】
1つの単一畳込み層が、サイズが(4,4)である64個のフィルタを有し、その後にサイズ(3,3)の最大プーリング層が続いている。プーリング層の出力は、次いで平坦化されて、サイズ100の完全接続層に入力され、次いで0乃至9の10個の数字を表す10次元の出力にマッピングされる。
【0102】
攻撃についてのいくつかの初期サンプルが必要であるので、便宜上、訓練データの20%(12000個のサンプル)が攻撃用にランダムに選択される。残りの48000個のサンプルは、実際の訓練データセットを形成する。攻撃入力と関連付けられた対応する12000ラベルを使用する必要がないことに注意されたい。
【0103】
訓練後、CNNモデルは、テストデータセットについて、平均マクロ適合率0.989、再現率0.989、およびF1値0.989という比較的良好なパフォーマンスを達成した。
【0104】
修正関数-modify_without_changing_expected_labelを実装するために、比較的単純だが効果的なアプローチが、この画像認識タスクに対して採用された。アプローチは、平均0および標準偏差0.05の正規ノイズを攻撃データセット内のサンプルに追加することを含んだ。最終的目標が被害者モデルを騙すことであるので、それらが被害者モデルに誤った予測を出させ得る限り、修正後に負のピクセル値を潜在的に含んでもよい汚染サンプルを受け取っても問題がない。
【0105】
実施例1に使用されたVIアルゴリズム(アルゴリズム2)が以下に説明されるが、これは上記の基本アルゴリズム1とは若干異なる。
アルゴリズム2:
入力:
M:攻撃対象となる訓練済みCNNモデル;
X:対応するラベルを有しない入力サンプルのセット;
出力:
すべての潜在的敵対的サンプルのサブセット
ステップ:
1.Initialize output list:adversarial_examples=[]
2.For each xi in X:
3. noise1=random.normal(mean=0,standard deviation=0.05,
4. size=(28,28))
5. noise2=random.normal(mean=0,standard deviation=0.05,
6. size=(28,28))
7. xmodified1=xi+noise1
8. xmodified2=xi+noise2
9. //xi_modified1 and xi_modified2 share the same expected label,which
10. //is unknown to the model M
11. yi_modified1=M(xi_modified1)
12. yi_modified2=M(xi_modified2)
13. if yi_modified1!=(does not equal)yi_modified2:
14. Add(xi_modified1,xi_modified2)into adversarial_examples
15. break
16.Return adversarial_examples
上記のアルゴリズム2が入力サンプルのセットに対して継続的に実行される場合、無制限の数の潜在的敵対的サンプルのペアが取得されてもよく(行3と4は、ランダム関数を提供し、実行ごとに異なる値が返すことになる)、各ペアに対して、少なくとも1つの候補は、真の敵対的サンプルである。
【0106】
表1は、入力サンプルのセットに対してアルゴリズム2を10回だけ実行することを示す。
【0107】
【0108】
上記のペアのそれぞれにおいて、少なくとも1つの真の敵対的サンプルがあり、それで、合計で少なくとも487個の敵対的サンプルが、入力サンプルのセットの10回の実行において得られた。実行10からの2つの敵対的サンプルのペアが
図4Aに示されている。前節で述べたように、この潜在的敵対的サンプルのペアが見つけられた後に、期待予測はゼロになるので、候補1が真の敵対的サンプルであることを(たとえば、ユーザレビューによって)識別することが可能である。
図4Bは、さらに2つの敵対的サンプルのペアを示す。この実施例では、期待予測は3でなければならないので、候補1と候補2の両方が真の敵対的サンプルであることが観察され得る。
【0109】
実施例2-固有表現認識モデルへの攻撃
より具体的なラベルで教師ありモデル(たとえば、実施例1のCNNモデル)を攻撃するよりも、より一般的なラベルで教師ありモデルを攻撃する方がはるかに効果的である。その理由は、一般的なラベルは特定のラベルに比べてはるかに見つけやすいからである。たとえば、固有表現認識では、一般的エンティティは、「人物」、「場所」、「組織」などを含み、これらは、一般的なテキストに出現する可能性が非常に高い。それで、攻撃の入力として使用するデータを収集することがはるかに容易である。
【0110】
実験2において、50Kのランダムに選択された文を含む共通クロールコーパスデータセット(http://commoncrawl.org/the-data/get-started/)のサブセットを攻撃入力として使用した。このデータセットのいくつかのサンプルを以下に示す。
サンプルA:フィッツロビアへのスキップ許可は必要ですか?
サンプルB:炭酸飲料は美味しそうですね。あなたのブログを訪れるのは初めてです。良いレシピを持っている。
サンプルC:上記の有線記事に特に注意してください、非常に包括的です。
【0111】
トランスフォーマからの双方向エンコーダ表現(BERT)ベースの固有表現認識(NER)モデルが訓練され、これが被害者モデルとして機能する。目標は、この事前訓練済みモデルを騙し得る敵対的サンプルを検出することである。この実験で使用されるエンティティは、「人物」、「場所」、「組織」、「通貨」、「時刻または日付」、「数値」を含む。
修正関数-modify_without_changing_expected_labelを実装するために、比較的単純だが効果的なアプローチが、単語にタイプミスを導入するために取られた。アプローチは、最初に元の発話からいくつかの単語をランダムに選択し、次に3つの修正(挿入、削除、および置換)のうちの1つを単語に適用することを含んだ。完全なアルゴリズムが、以下のアルゴリズム3に示されている。上記の修正関数を実装する代替方法は、同義語を使用することによる。
【0112】
実施例2に使用されるVIアルゴリズム(アルゴリズム3)が以下に説明されるが、これは上記の基本アルゴリズム1とは若干異なる。
アルゴリズム3:
入力:
M:攻撃対象となる訓練済みNERモデル。
X:対応するラベルを有しない入力サンプルのセット。
S:2つの文字列が意味的に類似しているか否かを決定するために使用される閾値
出力:
すべての潜在的敵対的サンプルのサブセット
ステップ:
1.Initialize output list:adversarial_examples=[]
2.For each xi in X:
3. pivot=xi
4. candidate words=RandomPickWordsFrom(pivot)
5. For each word wj in candidate words:
6. variant_pairs=[]
7. operations=SelectTypoTypes()
8. cadidates=ApplyTypoOperations(wj,operations)
9. For each candidate ck in candidates:
10. Create pivot_variant by Replace wj with ck in pivot
11. Add(pivot,pivot_variant)to variant_pairs
12. inconsistent_pair_list=[]
13. For each pair pm in variant_pairs
14. If the two elements in it are inconsistent
15. Add pair pm into inconsistent_pair_list
16. if inconsistent_pair_list is not empty
17. sort inconsistent_pair_list by semantic similarity
18. Add inconsistent_pair_list[0]to adversarial_examples
19. Break
20. else
21. If variant_pairs is not empty
22. Sort variant_pairs by semantic similarity
23. p1,p2=variant_pairs[0]
24. pivot=p2
26.Return adversarial_examples
アルゴリズム3において、元のサンプル(ピボット)ごとに、第1にいくつかの候補単語がランダムに選択される。第2に、候補単語に対して、修正操作(たとえば、タイプミス操作)を適用して修正単語を取得し、修正単語を使用して元のサンプル内の元の単語を置き換えて修正サンプル(ピボットバリアント)を取得する。第3に、ピボットバリアントとピボットを比較して、それらに矛盾があるか否かを確認する。そうであるなら、ピボットバリアントが補助リストに追加される。第4に、(ピボットバリアントとピボットの)ペアの比較後に、補助リストが文字列の類似性によって並べ替えられ、最高の類似性スコアを有するピボットバリアントが返されるかまたは識別される。(ピボットバリアントとピボット)ペアの比較後に補助リストが空である場合、ピボットは最高の類似性スコアを有するものに更新され、アルゴリズム3は第2ステップに戻って次の候補単語を修正し、新しい修正されたサンプルを取得し、次いで第3および第4ステップのプロセスを繰り返す。
【0113】
例として、元のサンプル(ピボット)が「EdisonはOracleの従業員である」であり、「Edison」と「従業員」が2つの候補単語として選択されると仮定する。そのとき、修正関数(たとえば、タイプミス)が単語「Edison」に適用され、単語「Edison」が(「Edisson」と「Ediso」)に修正される。それで、ピボットバリアントが、「EdissonはOracleの従業員です」および「EdisoはOracleの従業員です」となる。そして、「EdisonはOracleの従業員です」(ピボット)は、「EdissonはOracleの従業員である」(ピボットバリアント)および「EdisoはOracleの従業員です」(ピボットバリアント)と比較して、ピボットバリアントがピボットと矛盾しているか否かを確認する。そうである場合、ピボットバリアントは補助リストに入れられる。ケース1:2つのピボットバリアントの両方がピボットと矛盾していると仮定すると、この場合、補助リストは、ピボットバリアントとピボットとの間の類似性に基づいて並べ替えられる。「EdissonはOracleの従業員である」の方が、類似性が高いとすると、この場合、「EdisonはOracleの従業員である」と「EdissonはOracleの従業員である」とを敵対的サンプルのペアとして戻りリストに直接追加され得る。ケース2:ピボットバリアントのいずれもがピボットと矛盾しない場合、ピボットはより高い類似性スコアを有するので、「EdissonはOracleの従業員である」に更新される。そして、修正関数(たとえば、タイプミス)が、第2候補単語「Oracle」に適用され、上記のプロセスが繰り返される。
【0114】
アルゴリズム3の1つの重要な詳細は行14である。ここで、2つの候補が同時に異なるエンティティおよび異なるコンテキストを有する場合に限り、それらの2つの候補は矛盾すると定義される。各候補と関連付けられたエンティティは、被害者モデルMによって与えられ、コンテキストは、エンティティを除くすべての別の部分である。
【0115】
実施例2において、効率を高めるために、アルゴリズム3では、行4で選択された候補単語の異なる順序が考慮されず、その代わりに、その自然な順序が使用された。攻撃入力のサイズが中程度または小さい場合、最初に、各入力においてまたはヒューリスティック手法を第1ランクの単語に適用することによって、候補単語のすべての考えられる摂動を取得することが可能であり、考えられる順序ごとに、アルゴリズム3が適用され得る。アルゴリズム3によって見つけられた合計26773個の潜在的敵対的サンプルのペアがあり、これは、少なくとも26773個の敵対的サンプルが特定されたことを意味する。
【0116】
アルゴリズムによって見つけられた敵対的サンプルのペアのうちの2つが以下の表2に示されている。
【0117】
【0118】
【0119】
示すように、これら2つのペアの両方において、候補1と候補2との間には小さい差があり、対応する語義に関する意味は変わらない。このことは、被害者モデルが誤った予測を行うには十分である。ペア1では、候補2が「ned」をエンティティ「PERSON」と誤って認識し、ペア2では、候補1が「us」を「LOCATION」と誤って認識する。
【0120】
結論
その結果として、これらの実施例によって、この技術が攻撃入力として事前にラベル付けされたデータを要求することなく、潜在的敵対的ペアを見つけるために容易に適用され得るという意味で、VIが概念的に敵対的攻撃によく適合していることが実証された。画像認識と固有表現認識の両方に関する実験は、敵対的攻撃にVIを適用することの有用性および有効性を実証するために実施された。
【0121】
バリアント不一致攻撃のためのシステムおよび技術
図5は、様々な実施形態によるバリアント不一致攻撃を実装するためのコンピューティング環境500を示すブロック図である。図示のように、コンピューティング環境500は、たとえば、本明細書で詳細に説明するチャットボットシステムの部分として、1つまたは複数の通信ネットワークを介して相互接続された、訓練システム505、バリアント不一致攻撃システム510、およびモデル展開システム515を備える。
【0122】
訓練システム505は、リソースマネージャ520、モデルストア525、訓練処理システム530、訓練フレームワーク535、およびモデルキャッシュ545を有するファイル共有システム540を備える。リソースマネージャ520、訓練処理システム530、および訓練フレームワーク535は、1つまたは複数の訓練技術を使用してタスクを実行するための1つまたは複数のモデル(たとえば、機械学習言語モデル)を構成する。1つまたは複数の訓練技術は、Word2vec(静的単語埋込みを生成する浅いニューラルネットワーク)、BERT(単語埋込みを作成するためのトランスフォーマーエンコーダーベースのオートエンコーダー言語モデル、ならびに微調整を使用した言語モデリングベースおよびエンコーダベースの方法)、ELMo(エンコーダベースの方法を使用して単語埋込みと言語モデリングとを作成するための長期短期記憶(LSTM)ベースのモデル)、GPT(微調整ベースの方法を使用して単語埋込みと言語モデリングとを作成するためのトランスフォーマデコーダベースの自己回帰言語モデル)、XLNet(言語モデリングのための自己回帰およびノイズ除去オートエンコーダベースのモデル)、またはそれらの任意の組み合わせを含むが、これに限定されない。1つまたは複数の事前訓練技術のためのアルゴリズムおよびハイパーパラメータは、ユーザ(たとえば、開発者)によって識別されてもよく、モデルを構成するために使用されてもよい。それの追加または代替として、アルゴリズムおよびハイパーパラメータは、データ検索、評価、最適化などのような自動化された方法で、リソースマネージャ520および訓練処理システム530によって取得されてもよい。
【0123】
機械学習モデルは、固有表現認識モデル、意図認識モデル、または画像認識モデルのようなチャットボットシステムの一部であってもよい。場合によっては、機械学習モデルは、畳込みニューラルネットワーク(「CNN」)、たとえば、開始ニューラルネットワーク、残差ニューラルネットワーク(「Resnet」)、あるいはリカレントニューラルネットワーク、たとえば、長期短期記憶(「LSTM」)モデルまたはゲートリカレントユニット(「GRU」)モデル、ディープニューラルネットワーク(「DNN」)の別のバリアント(たとえば、単一意図分類のためのマルチラベルnバイナリDNN分類器またはマルチクラスDNN分類器)である。機械学習モデルは、自然言語処理のために訓練済み任意の別の適切な機械学習モデルであり得、それは、たとえば、ナイーブベイズ分類器、線形分類器、サポートベクターマシン、ランダムフォレストモデルなどのバギングモデル、ブースティングモデル、浅いニューラルネットワーク、またはそのような技術のうちの1つまたは複数の組み合わせ、たとえば、CNN-HMMもしくはMCNN(マルチスケール畳込みニューラルネットワーク)など、そのような技術の1つ以上の組合わせである。チャットボットシステムは、発話内の1つまたは複数のエンティティを認識する、発話が特定のスキルボットが実行するように構成されているタスクを表す可能性を決定する、第1タイプのスキルボットの発話から意図を予測する、および第2タイプのスキルボットについての発話から意図を予測するために、同じタイプの機械学習モデルまたは異なるタイプの機械学習モデルを使用することがある。さらに別のタイプの機械学習モデルが、本開示に従う別の例において実装されてもよい。
【0124】
リソースマネージャ520、訓練処理システム530、および訓練フレームワーク535は、組み合わせて動作して、モデルを訓練する(たとえば、事前訓練、微調整、訓練など)。たとえば、リソースマネージャ520は、モデルを訓練する、テストする、および検証するためのデータセットを取得してもよく、訓練処理システム530は、モデルをホストおよび訓練するためのマルチノードネットワークを実装してもよく、訓練フレームワーク535は、訓練のためのステップを実行し得る訓練データ、テストデータ、検証データのセットを使用して、マルチノードネットワーク上でモデルを訓練するためのステップを実行してもよい。訓練の目的は、1つまたは複数の処理タスク(たとえば、1つまたは複数の自然言語処理タスク)において使用され得るモデルパラメータを学習するのを助けるようにモデルを訓練することである。
【0125】
リソースマネージャ520は、サンプルデータを取得して、サンプルデータを訓練用のサンプルのサブセット(たとえば、90%)とテストおよび/または検証用のサンプルのサブセット(たとえば、10%)に分割し、サンプルのサブセットを前処理し、サンプルのサブセットを任意選択で拡張し、そして、場合によってはサンプルのサブセットにラベルで注釈を付けてもよい。分割が、ランダムに(たとえば、90/10%または70/30%など)実行されて、または分割が、K-Fold Cross-Validation、Leave-one-out Cross-Validation、Leave-one-group-out Cross-Validation、Nested Cross-Validationなどのようなより複雑な検証技術により実行されて、サンプリングのバイアスと過剰適合とを最小限に抑えてもよい。
【0126】
機械学習モデルの訓練プロセスは、機械学習モデルのハイパーパラメータを選択することと、サンプルのサブセットから機械学習モデルにサンプルを入力する反復操作を実行して、機械学習モデルの目的関数(たとえば、損失関数または誤差関数のようなコスト関数を最小化する)を最大化または最小化するモデルパラメータのセット(たとえば、重みおよび/またはバイアス)を見つけることとを含んでもよい。ハイパーパラメータは、機械学習モデルの挙動を制御するために調整または最適化され得る設定である。ほとんどのモデルは、メモリや実行コストなどのモデルの様々な機能を制御するハイパーパラメータを明示的に定義する。ただし、追加のハイパーパラメータは、機械学習モデルを特定のシナリオに適応させるために、定義されてもよい。たとえば、ハイパーパラメータは、モデルの隠れユニットの数、モデルの学習率、畳込みカーネル幅、またはモデルのカーネルの数を含んでもよい。
【0127】
訓練処理システム530および訓練フレームワーク535によって実行される訓練ステップは、モデルが推論フェーズで使用するために十分に訓練されるまで訓練および検証を繰り返し実行することを含んでもよい。たとえば、教師あり学習ベースのモデルの場合、訓練の目標は、関数「h()」(仮説関数とも呼ばれることもある)を学習することであり、該関数は、訓練入力空間Xをターゲット値空間Y、h:X→Yにマッピングすることにより、h(x)はyの対応する値の適切な予測値になる。様々な異なる技術が、この仮説関数を学習するために使用されてもよい。いくつかの技術では、仮説関数を導出する一環として、入力のグラウンドトゥルース値と、その入力の予測値との間の差を測定する目的関数が定義されてもよい。訓練の一環として、バックプロパゲーション、ランダムフィードバック、直接フィードバックアライメント(DFA)、間接フィードバックアライメント(IFA)、ヘビアン学習などのような技術が使用されて、この目的関数を最大化または最小化する(たとえば、コスト関数を最小化する)。
【0128】
訓練技術は、訓練されるモデルのタイプに依存してもよい。たとえば、様々なタイプのニューラルネットワークモデル、サポートベクターマシン(SVM)モデルなどのような様々なタイプの教師あり学習モデルがある。様々な異なる訓練技術が使用されてもよい。たとえば、前述したように、モデルについて損失またはコスト関数が定義され、逆伝播技術がこの損失または最小化関数を最小化するために使用されてもよい。リソースマネージャ520、訓練処理システム530、および訓練フレームワーク535は、ニューラルネットワークモデルを構築および訓練するために訓練を実行してもよい。ニューラルネットワークまたはニューラルネットワークモデルは、人間の脳内でニューロンおよびニューロンのネットワークが機能する態様によって影響を受ける計算モデルを表す。ニューラルネットワークは、層状に配置された複数のノードを含む。各ノードは、いくつかの別のノードまたは外部ソースから入力を受け取って、出力を計算する。ノードへの各入力は、別の入力に対するその入力の相対的な重要性に基づいて割り当てられる関連する重みを有する。ノードは、関数(活性化関数)をその入力の重み合計およびバイアス入力に適用して、出力を生成する。活性化関数は、ノードの出力に非線形性をもたらし得る。ニューラルネットワークの層は、1つまたは複数の入力ノードを含む入力層、1つまたは複数の出力ノードを含む出力層、および入力層と出力層との間に挟まれた0個以上の隠れ層を備えてもよく、各隠れ層は1つまたは複数のノードを含む。ある層でのノードの出力は、別の層のノードへの入力として提供または接続され得る。出力層の出力は、ニューラルネットワーク処理によってなされた結果または予測を表す。ニューラルネットワークは、1つまたは複数のプロセッサ上で実行されるコードを使用して実装され得、コードは、ノード、ノード同士間の接続、ノードによって実行される機能、およびノードを通る処理フローを実装する。ニューラルネットワークは、たとえば、逆伝播訓練技術を使用して訓練され得、この技術において、ニューラルネットワーク内のノードへの入力と関連付けられた重みが、ニューラルネットワークの出力層によって提供される出力と関連付けられた目的関数を最大化または最小化するという目的で操作される。
【0129】
コスト関数を最小化するモデルパラメータのセットが特定されると、モデルは訓練されており、サンプルのサブセット(テストまたは検証データセット)を使用して検証され得る。検証プロセスは、K-Fold Cross-Validation、Leave-one-out Cross-Validation、Leave-one-group-out Cross-Validation、Nested Cross-Validationなどのような検証技術を使用して、サンプルのサブセットからアスペクトサンプルをモデルに入力することにより、ハイパーパラメータを調整し、最終的に最適なハイパーパラメータのセットを見つける反復操作を含む。最適なハイパーパラメータのセットが取得されると、サンプルのサブセットからサンプルの予約されたテストセットが、モデルに入力されて出力(たとえば、クラス)を取得し、出力が、ブランドアルトマン方法およびスピアマンのランク相関係数のような相関技術を使用してグランドトゥルースと比較して評価され、誤差、正確度、精度、再現率、受信者動作特性曲線(ROC)などのような性能測定基準を計算する。モデルがテストおよび検証されると、訓練フレームワーク535は、リアルタイムまたは推論データポイントに基づいて、推論または実行時フェーズ中に推論または予測のための訓練済みモデルを出力する。
【0130】
理解されるべきであるが、別の訓練/検証メカニズムが企図され、コンピューティング環境500内で実装され得る。たとえば、モデルが訓練されてもよく、ハイパーパラメータが、サンプルのサブセットからのサンプルに基づいて調整されてもよく、サンプルのサブセットからのサンプルが、モデルのパフォーマンスをテストおよび評価するためにのみ使用されてもよい。とはいえ、さらに、本明細書で説明する訓練メカニズムは、新しいモデルの訓練に焦点を当てる。これらの訓練メカニズムは、別のデータセットから訓練済み既存のモデルを微調整するために利用し得る。たとえば、場合によっては、モデルが1つの領域内のデータセットからのサンプルを使用して事前訓練されている場合がある。そのような場合、モデルは、転移学習に使用され、別の領域からのサンプルを使用して再訓練/検証され得る。
【0131】
モデルが訓練された後に、モデルは次いでモデルストア525に記憶され得、モデルは、リアルタイムまたは推論データポイントに基づいて、推論または実行時フェーズ中に微調整および/または推論あるいは予測のために1人または複数のユーザによって取得され得る。たとえば、顧客が、テキスト内の固有表現を識別するために事前訓練済みモデルを取得して使用してもよい。それに追加または代替として、モデルは、モデルキャッシュ545内に記憶され、ファイル共有システム540のような分散環境の様々なテナントに利用され得る。モデルキャッシュ545内のモデルは、リアルタイムまたは推論データポイントに基づいて、推論または実行時フェーズ中に微調整および/または推論もしくは予測を行うための1つまたは複数のテナントによって、ファイル共有システム540を介して取得またはアクセスされ得る。
【0132】
バリアント不一致攻撃システム510は、バリアント不一致アルゴリズムストア550、バリアント不一致フレームワーク555、敵対的サンプルストア560、および敵対的サンプル575に関するモデル570の敵対訓練のための敵対訓練フレームワーク565を備える。バリアント不一致アルゴリズムストア550は、敵対的訓練において使用される敵対的サンプル575を識別するための様々なアルゴリズム(たとえば、アルゴリズム1、アルゴリズム2、アルゴリズム3など)を記憶する。バリアント不一致アルゴリズムストア550からの1つまたは複数のアルゴリズムが選択され、事前訓練済み機械学習モデル570(たとえば、モデルストア525またはモデルキャッシュ545からのモデル)を用いてバリアント不一致フレームワーク555上で実行される。1つまたは複数のアルゴリズムは、モデルの訓練、テスト、または検証に使用可能な元のデータのタイプ、元のデータおよび/またはモデルに使用されるmodify_without_changing_expected_label関数のタイプ、敵対的な攻撃を防御するように訓練済み敵対的であるモデルのタイプ、またはその組み合わせに基づいて選択されてもよい。各アルゴリズムは、事前訓練済み機械学習モデル570(たとえば、モデルストア525またはモデルキャッシュ545からのモデル)、および対応するラベルを有しない入力サンプル580のセット(たとえば、対応するラベルを有しないリソースマネージャ520によって取得されたモデルを訓練、テスト、または検証するためのデータのセットまたはサブセット)を入力として受け止めるように構成されている。
【0133】
アルゴリズムおよびバリアント不一致フレームワーク555は、入力サンプルのセット580からの様々なサンプルにおいてmodify_without_changing_expected_label関数を実行することにより、x1およびx2のような修正サンプルのペアまたはセットを生成する。modify_withot_changing_expected_label関数は、本明細書で詳細に説明するように、効用保存方法で元の入力サンプルを修正する。この関数の実装は、選択されたアルゴリズムに応じて様々なアプリケーションに対して、特に視覚およびテキストなどの様々なモダリティにわたるアプリケーションに対して異なってもよい。アルゴリズムおよびバリアント不一致フレームワーク555は、事前訓練済み機械学習モデル570を実行して、サンプルx1を入力するとして受け止めて、このx1に対して出力y1を生成し、修正されたサンプルx2を入力として受け止めて、このx2に対して出力y2を生成する。アルゴリズムおよびバリアント不一致フレームワーク555は、次いで2つの予測y1とy2とが実際に異なるか否かを判断し、仮に異なる場合は、予測の少なくとも1つが間違っていると判断する。x1とx2との差が「偏差」であり、y1とy2との潜在的差が「不一致」である。予測のペアが異なるものである場合、敵対的サンプルのペア575は、敵対的サンプルストア560に記憶された敵対的サンプルのペアのセットに追加される。予測のペアが同じである場合、サンプルのペアは、サンプルのいずれもが敵対的であるとみなされるので、サンプルのペアが破棄される。任意選択で、ユーザは、敵対的サンプルのペアのセットに追加する前に、サンプルのペアおよび予測のペアをレビューし、修正サンプルのペアの各修正サンプルが真の敵対的サンプル575であるか否かを個別に決定し、敵対的サンプルのペアのセットへの修正サンプルの追加を、ユーザによって真の敵対的サンプル575であるとみなされる修正サンプルの敵対的サンプルのペアのセットへの追加であるとしてのみ制限してもよい。
【0134】
敵対的訓練フレームワーク565は、事前訓練済み機械学習モデル570において微調整または敵対的訓練プロセスを実行する。微調整または敵対的訓練プロセスは、敵対的サンプルストア560からの敵対的サンプル575を使用して、事前訓練済み機械学習モデル570を再訓練することを含む。微調整または敵対的訓練プロセスの結果として、元の事前訓練済み言語モデル570のモデルパラメータは、敵対的データおよびモデル実行においてユーザが関心のあるタスクの特性を考慮して更新される。敵対的訓練フレームワーク565は、事前訓練済み機械学習モデル570を訓練し、テストし、検証するための敵対的サンプルのセットを取得し、訓練データ、テストデータ、および検証データのセットを使用して事前訓練済み機械学習モデル570を微調整するためのステップを実行してもよい。
【0135】
敵対的訓練フレームワーク565によって実行される微調整ステップは、事前訓練済み機械学習モデル570が推論フェーズで使用するために十分に訓練されるまで、訓練および検証を繰返し実行することを含んでもよい。たとえば、教師あり学習ベースのモデルの場合、訓練の目標は、訓練入力空間Xをターゲット値空間Y、h:X→Yにマッピングする関数「h()」(仮説関数とも呼ばれることもある)を学習することにより、h(x)はyの対応する値についての適切な予測値である。様々な技術が、この仮説関数を学習するために使用されてもよい。一部の技術では、仮説関数を導出する一環として、入力についてのグラウンドトゥルース値とその入力の予測値との間の差を測定する目的関数が、定義されてもよい。訓練の一環として、バックプロパゲーション、ランダムフィードバック、直接フィードバックアライメント(DFA)、間接フィードバックアライメント(IFA)、ヘビアン学習などのような技術を使用して、この目的関数を最大化または最小化する。訓練システム505に関して説明したように、訓練技術は訓練されるモデルのタイプに依存する可能性がある。たとえば、様々なタイプのニューラルネットワークモデル、サポートベクターマシン(SVM)モデルなどのような様々なタイプの教師あり学習モデルがある。様々な訓練技術が、微調整される事前訓練済みモデルのタイプに応じて使用されてもよい。
【0136】
コスト関数を最小化するモデルパラメータのセットが特定されると、事前訓練済み機械学習モデル570は、再訓練または微調整され、サンプルのサブセット(テストまたは検証データセット)を使用して検証され得る。検証プロセスは、K-Fold Cross-Validation、Leave-one-out Cross-Validation、Leave-one-group-out Cross-Validation、Nested Cross-Validationなどのような検証技術を使用して、サンプルのサブセットから事前訓練済み機械学習モデル570にサンプルを入力して、ハイパーパラメータを調整し、最終的に最適なハイパーパラメータのセットを見つけるという繰返し操作を含む。最適なハイパーパラメータのセットが取得されると、サンプルのサブセットからサンプルの予約されたテストセットが、モデルに入力されて出力(たとえば、予測クラス)を取得してもよく、その出力は、ブランドアルトマン方法およびスピアマンのランク相関係数のような相関技術を使用してグランドトゥルースのアスペクトと比較して評価され、誤差、正確度、精度、再現率、受信者動作特性曲線(ROC)などのような性能測定基準を計算する。
【0137】
事前訓練済み機械学習モデル570がテストされ検証されると、敵対的訓練フレームワーク565は、リアルタイムまたは推論データポイントに基づいて、推論または実行時フェーズ中に推論またはアスペクト予測を行うためのモデルを出力する。たとえば、事前訓練済み機械学習モデル570が訓練済み後に、事前訓練済み機械学習モデル570が微調整され、または事前訓練済み機械学習モデル570が敵対的サンプルにさらされた後に、モデルがそのときモデル展開システム515を使用して展開されてもよい。モデルは、健全性監視サービス590を有するKubernetesなどのコンテナベースのシステム585に展開され得る。コンテナベースのシステム585内のモデルは、リアルタイムまたは推論データポイントに基づく推論または実行時フェーズ中に、推論フレームワーク590を介して推論または予測を行うために使用され得る。健全性監視サービス595は、コンテナベースのシステム585上のモデルの健全性を監視し得、(たとえば、ドリフト、敵対的攻撃の検出時に、または新しい領域の供給時に)必要に応じてモデルの再訓練または微調整を始動させ得る。もっとも、モデルはコンテナベースのシステム内に展開されるものとして記述されているが、本開示の精神から逸脱することなく、任意の別のタイプのシステムが、実行時フェーズでモデルを展開するために使用されてもよいことを理解されたい。
【0138】
図6は、様々な実施形態に従うバリアント不一致攻撃のプロセス600を示すフローチャートである。
図6に示す処理は、それぞれのシステム、ハードウェア、またはそれらの組合わせのうちの1つまたは複数の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)において実装され得る。ソフトウェアは、非一時的記憶媒体(たとえば、メモリデバイス)に記憶されてもよい。
図6に示し、以下に説明する方法は、例示が意図され、限定的なものではない。
図6は、特定の順番または順序で行われる様々な処理ステップを示しているが、これは限定されることが意図されない。特定の代替実施形態では、ステップは、何らかの異なる順序で実行されてもよく、または一部のステップは並行して実行されてもよい。
図1~3および5に示す実施形態のような特定の実施形態では、
図6に示す処理は、コンピューティング環境(たとえば、前処理サブシステム210または環境500)によって実行されて、1つまたは複数のモデル(たとえば、意図分類器242もしくは320またはモデル570)を訓練するための潜在的敵対的サンプルのペアのセットを生成し得る。
【0139】
ステップ605において、入力サンプルのセットが、機械学習モデルを攻撃するために取得される。サンプルのセットは、対応するラベルを有しない。言い換えれば、サンプルのセットは、コンテキストを提供するための意味のある、情報を与えるラベルがタグ付けされず、それで、機械学習モデルは意味のある、情報を与えるラベル(たとえば、ラベル付きのサンプルから機能を推論できない)から学習し得ない。場合によっては、機械学習モデルはチャットボットシステムの部分である。特定の例では、機械学習モデルは、固有表現認識モデルである。
【0140】
ステップ610において、サンプルのセットからのサンプルが、効用保存方法で修正されて、修正サンプルのペアが生成される。効用保存方法での修正は、サンプルの元の意味または期待ラベルを変更せずにサンプルを修正することを意味する。修正サンプルのペアは、同じ期待ラベルを共有する。場合によっては、修正は、ノイズをサンプルに追加することを含む。別の例では、修正は、サンプルから1つまたは複数の文字または単語を選択し、1つまたは複数の文字または単語において挿入、削除、または置換操作を実行することを含む。表3は、効用保存方法でサンプルを修正するために使用されてもよい効用保存変換の例を提供する。
【0141】
【0142】
【0143】
ステップ615において、機械学習モデルは、修正サンプルのペアを使用して攻撃される。この攻撃は、(i)機械学習モデルにとって未知の同じ期待ラベルを維持しながら、修正サンプルのペアを機械学習モデルに入力することと、(ii)機械学習モデルによって、修正サンプルのペアに対して予測のペアを生成することと、を含む。
【0144】
ステップ620において、予測のペアが比較されて、予測のペアが同じであるか異なるかを決定する。本明細書で使用されるように、「同じ」とは、2つの予測がまったく同じでなければならないことを意味する。たとえば、NERの場合、(1)Edison buys a new bok、(2)Edison buys a nwe bookという2つの修正サンプルが得られるとする。修正サンプル(1)の場合、モデルは「Edison」を名前エンティティとして認識するが、修正サンプル(2)の場合、モデルは「Edison」を名前エンティティとは認識せず、それらは異なる。したがって、予測のペアは、モデルがこのサンプルの2つの修正サンプルの両方について「Edison」を名前エンティティとして認識する場合に限り、同じである。
【0145】
ステップ625において、予測のペアが異なるものであることに応じて、修正サンプルのペアが敵対的サンプルのセットに追加される。任意選択的に、ユーザは、敵対的サンプルのセットに追加する前に修正サンプルのペアをレビューし、修正サンプルのペアの各修正サンプルが真の敵対的サンプルであるか否かを個別に決定し、ユーザによって敵対的サンプルのセットへの修正サンプルの追加を、真の敵対的サンプルであるとみなされる修正サンプルの敵対的サンプルのセットへの追加のみに制限してもよい。場合によっては、予測のペアが同じであることに応じて、修正サンプルのペアが、サンプルのどちらも敵対的であるとはみなされないので、破棄される。
【0146】
任意選択のステップ630では、機械学習モデル(または異なる機械学習モデル)は、敵対的サンプルペアのセットを用いて訓練される。訓練は、敵対的サンプルのセット内の各サンプルに期待ラベルによって注釈を付けて、注釈付き敵対的サンプルを取得することと、注釈付き敵対的サンプルを機械学習モデルまたは異なる機械学習モデルに供給することと、目的関数の最大化または最小化に基づいて注釈付き敵対的サンプルを使用して複数のモデルパラメータを学習することと、を含む。
【0147】
例示的システム
図7は、分散システム700の簡略図を示す。図示の例では、分散システム700は、1つまたは複数の通信ネットワーク710を介して、サーバ712に結合された1つまたは複数のクライアントコンピューティングデバイス702、704、706、および708を含む。クライアントコンピューティングデバイス702、704、706、および708は、1つまたは複数のアプリケーションを実行するように構成されてもよい。
【0148】
様々な例において、サーバ712は、本開示で説明された1つまたは複数の実施形態を可能にする1つまたは複数のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。特定の例では、サーバ712はまた、非仮想環境および仮想環境を含み得る別のサービスまたはソフトウェアアプリケーションを提供してもよい。いくつかの例では、これらのサービスは、クライアントコンピューティングデバイス702、704、706、および/または708のユーザに、サービスとしてのソフトウェア(SaaS)モデルの下でのように、ウェブベースまたはクラウドサービスとして提供されてもよい。ユーザ操作クライアントコンピューティングデバイス702、704、706、および/または708は、1つまたは複数のクライアントアプリケーションを利用してサーバ712と対話することにより、これらの構成要素によって提供されるサービスを利用してもよい。
【0149】
図7に示す構成では、サーバ712は、サーバ712によって実行される機能を実装する1つまたは複数の構成要素718、720、および722を含んでもよい。これらの構成要素は、1つまたは複数のプロセッサ、ハードウェア構成要素、またはそれらの組み合わせによって実行されてもよいソフトウェア構成要素を含んでもよい。分散システム700とは異なる、様々な異なるシステム構成が可能であることを理解されたい。
図7に示す例では、したがって、例示的なシステムを実装するための分散システムの一例であり、限定することが意図されたものではない。
【0150】
ユーザは、クライアントコンピューティングデバイス702、704、706、および/または708を使用して、1つまたは複数のアプリケーション、モデル、またはチャットボットを実行させてもよく、これらのアプリケーション、モデル、またはチャットボットは、次いで本開示の教示に従って実装またサービスを提供させられてもよい1つまたは複数のイベントまたはモデルを生成してもよい。クライアントデバイスは、クライアントデバイスのユーザがクライアントデバイスと対話することを可能にするインタフェイスを提供してもよい。クライアントデバイスはまた、このインタフェイスを介してユーザに情報を出力してもよい。
図7は4つのクライアントコンピューティングデバイスのみを示しているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。
【0151】
クライアントデバイスは、ポータブルハンドヘルドデバイス、パーソナルコンピュータおよびラップトップのような汎用コンピュータ、ワークステーションコンピュータ、ウェアラブルデバイス、ゲームシステム、シンクライアント、様々なメッセージングデバイス、センサまたは別の検知デバイスなどの様々なタイプのコンピューティングシステムを含んでもよい。これらのコンピューティングデバイスは、様々なモバイルオペレーティングシステム(たとえば、Microsoft Windows Mobile(登録商標)、iOS(登録商標)、Windows Phone(登録商標)、Android(商標)、BlackBerry(登録商標)、Palm OS(登録商標)など)を含む、様々な種類およびバージョンのソフトウェアアプリケーションおよびオペレーティングシステム(たとえば、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)、UNIX(登録商標)またはUNIX系オペレーティングシステム、Linux(登録商標)またはGoogle Chrome(商標)OSなどのLinux系オペレーティングシステム)を実行する場合がある。ポータブルハンドヘルドデバイスは、携帯電話、スマートフォン(たとえば、iPhone(登録商標))、タブレット(たとえば、iPad(登録商標))、携帯情報端末(PDA)などが含まれ得る。ウェアラブルデバイスには、Google Glass(登録商標)ヘッドマウントディスプレイおよびその別のデバイスが含まれる場合がある。ゲームシステムには、様々なハンドヘルドゲームデバイス、インターネット対応ゲームデバイス(たとえば、Kinect(登録商標)ジェスチャ入力デバイスの有無にかかわらずMicrosoft Xbox(登録商標)ゲームコンソール、Sony PlayStation(登録商標)システム、Nintendo(登録商標)が提供する様々なゲームシステムなど)が含まれる場合がある。クライアントデバイスは、様々なインターネット関連アプリ、通信アプリケーション(たとえば、電子メールアプリケーション、ショートメッセージサービス(SMS)アプリケーション)のような様々な異なるアプリケーションを実行することができ、様々な通信プロトコルを使用し得る。
【0152】
ネットワーク710は、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、AppleTalk(登録商標)などを含むがこれらに限定されない、様々な利用可能なプロトコルのいずれかを使用してデータ通信をサポートしてもよい、当業者に公知の任意のタイプのネットワークであってよい。単なる例として、ネットワーク710は、ローカルエリアネットワーク(LAN)、イーサネットに基づくネットワーク、トークンリング、ワイドエリアネットワーク(WAN)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば、電気電子学会(IEEE)1002.11プロトコルスイートのいずれかで動作するネットワーク)、Bluetooth(登録商標)、および/または別の無線プロトコル)、および/または任意のこれらの組み合わせおよび/または別のネットワークの任意の組合わせであってもよい。
【0153】
サーバ712は、1つまたは複数の汎用コンピュータ、専用サーバコンピュータ(例として、PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、または任意の別の適切な配置および/または組合わせから構成されてもよい。サーバ712は、仮想オペレーティングシステムを実行する1つまたは複数の仮想マシン、またはサーバの仮想記憶装置を維持するために仮想化されてもよい論理記憶装置の1つまたは複数の柔軟なプールのような仮想化を含む別のコンピューティングアーキテクチャを含んでもよい。様々な例において、サーバ712は、前述の開示で説明された機能を提供する1つまたは複数のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。
【0154】
サーバ712のコンピューティングシステムは、上述したもののうちのいずれかを含む1つまたは複数のオペレーティングシステム、および任意の市販のサーバオペレーティングシステムを実行し得る。サーバ712はまた、HTTP(ハイパーテキストトランスポートプロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(共通ゲートウェイインタフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含む、様々な追加のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行してもよい。例示的なデータベースサーバとしては、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)(International Business Machines)などから市販されているものが挙げられるが、これらに限定されない。
【0155】
いくつかの実装形態では、サーバ712は、クライアントコンピューティングデバイス702、704、706、および708のユーザから受信されたデータフィードおよび/またはイベント更新を解析および統合するための1つまたは複数のアプリケーションを含んでもよい。例として、データフィードおよび/またはイベント更新は、Twitter(登録商標)フィード、Facebook(登録商標)更新、あるいは1つまたは複数のサードパーティ情報ソースおよび継続的なデータストリームから受信されたリアルタイム更新を含んでもよいが、これらに限定されず、これは、センサデータアプリケーションと関連するリアルタイムイベント、金融ティッカー、ネットワークパフォーマンス測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などを含んでもよい。サーバ712はまた、クライアントコンピューティングデバイス702、704、706、および708の1つまたは複数の表示デバイスを介してデータフィードおよび/またはリアルタイムイベントを表示するための1つまたは複数のアプリケーションを含み得る。
【0156】
分散システム700は、1つまたは複数のデータリポジトリ714、716を含んでもよい。これらのデータリポジトリは、特定の例では、データおよび別の情報を記憶するために使用されてもよい。たとえば、データリポジトリ714、716のうちの1つまたは複数は、様々な実施形態に従って様々な機能を実行するときに、サーバ712によって使用されるチャットボットのパフォーマンスまたは生成されたモデルと関連する情報のような情報を記憶するために使用されてもよい。データリポジトリ714、716は、様々な場所に存在してもよい。たとえば、サーバ712によって使用されるデータリポジトリは、サーバ712に対してローカルであってもよく、またはサーバ712からリモートであってもよく、ネットワークベースの接続または専用接続を介してサーバ712と通信してもよい。データリポジトリ714、716は、異なるタイプであってもよい。特定の例では、サーバ712によって使用されるデータリポジトリは、データベース、たとえば、Oracle Corporation(登録商標)および別のベンダーによって提供されるデータベースなどのリレーショナルデータベースであってもよい。これらのデータベースの1つまたは複数は、SQL形式のコマンドに応じてデータベースへのデータの記憶、更新、およびデータベースからのデータの取り出しまたは取り戻しを可能にするように適合されてもよい。
【0157】
特定の例では、データリポジトリ714、716のうちの1つまたは複数は、アプリケーションデータを記憶するためにアプリケーションによって使用されてもよい。アプリケーションによって使用されるデータリポジトリは、たとえば、キー値ストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムによってサポートされる一般的なストレージリポジトリのような様々なタイプのものがあってもよい。
【0158】
特定の例では、本開示で説明された機能は、クラウド環境を介してサービスとして提供されてもよい。
図8は、特定の例に従って、様々なサービスがクラウドサービスとして提供され得るクラウドベースのシステム環境の簡略化ブロック図である。
図8に示される例では、クラウドインフラストラクチャシステム802は、1つまたは複数のクライアントコンピューティングデバイス804、806、および808を使用するユーザによって要求され得る1つまたは複数のクラウドサービスを提供してもよい。クラウドインフラストラクチャシステム802は、サーバ712に対して上記で説明されたものを含んでもよい1つまたは複数のコンピュータおよび/またはサーバを備えてもよい。クラウドインフラストラクチャシステム802内のコンピュータは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、または任意の別の適切な配列および/または組み合わせとして編成されてもよい。
【0159】
ネットワーク810は、クライアント804、806、および808とクラウドインフラストラクチャシステム802との間のデータの通信および交換を容易にしてもよい。ネットワーク810は、1つまたは複数のネットワークを含んでもよい。ネットワークは同じタイプであっても、異なるタイプであってもよい。ネットワーク810は、通信を容易にするために、有線および/または無線プロトコルを含む1つまたは複数の通信プロトコルを支持してもよい。
【0160】
図8に示す例は、クラウドインフラストラクチャシステムの一例にすぎず、これに限定されるものではない。いくつかの別の例では、クラウドインフラストラクチャシステム802は、
図8に示されるものよりも多くのまたは少ない構成要素を有してもよく、2つ以上の構成要素を組み合わせてもよく、構成要素の異なる構成または配列を有してもよいことを理解されたい。たとえば、
図8は3つのクライアントコンピューティングデバイスを示しているが、代替例では任意の数のクライアントコンピューティングデバイスがサポートされてもよい。
【0161】
クラウドサービスという用語は、一般に、サービスプロバイダのシステム(たとえば、クラウドインフラストラクチャシステム802)によってインターネットのような通信ネットワークを介してオンデマンドでユーザが利用可能にするサービスを指すのに使用される。通常、パブリッククラウド環境において、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダによって管理される。顧客は、したがってサービス用の別個のライセンス、サポート、またはハードウェアおよびソフトウェアリソースを購入する必要なく、クラウドサービスプロバイダによって提供されるクラウドサービスを利用してもよい。たとえば、クラウドサービスプロバイダのシステムが、アプリケーションをホストし、ユーザが、アプリケーションを実行するためのインフラストラクチャリソースを購入することを必要とせずに、インターネット経由で、オンデマンドでアプリケーションを注文して使用してもよい。クラウドサービスが、アプリケーション、リソース、およびサービスへの簡単で計測可能なアクセスを提供するように設計されている。いくつかのプロバイダーがクラウドサービスを提供する。たとえば、いくつかのクラウドサービスが、ミドルウェアサービス、データベースサービス、Javaクラウドサービスなどのようなカリフォルニア州Redwood Shoresの Oracle Corporation(登録商標)によって提供される。
【0162】
特定の例では、クラウドインフラストラクチャシステム802は、ハイブリッドサービスモデルを含む、サービスとしてのソフトウェア(SaaS)モデル、サービスとしてのプラットフォーム(PaaS)モデル、サービスとしてのインフラストラクチャ(IaaS)モデルなどの下でのような様々なモデルを使用する1つまたは複数のクラウドサービスを提供してもよい。クラウドインフラストラクチャシステム802は、様々なクラウドサービスの提供を可能にする一連のアプリケーション、ミドルウェア、データベース、および別のリソースを含んでもよい。
【0163】
SaaSモデルは、顧客が基礎となるアプリケーション用のハードウェアまたはソフトウェアを購入する必要なく、アプリケーションまたはソフトウェアをインターネットのような通信ネットワークを介してサービスとして顧客に配信できるようにする。たとえば、SaaSモデルは、クラウドインフラストラクチャシステム802によってホストされるオンデマンドアプリケーションへの顧客アクセスを提供するために使用されてもよい。Oracle Corporation(登録商標)によって提供されるSaaSサービスの例としては、人事/資本管理のための様々なサービス、顧客関係管理(CRM)、エンタープライズリソースプランニング(ERP)、サプライチェーン管理(SCM)、エンタープライズパフォーマンス管理(EPM)、解析サービス、ソーシャルアプリケーションなどが挙げられるが、これらに限定されない。
【0164】
IaaSモデルが一般に使用されて、インフラストラクチャリソース(たとえば、サーバ、ストレージ、ハードウェア、およびネットワーキングリソース)をクラウドサービスとして顧客に提供することにより、柔軟なコンピューティングおよびストレージ機能を提供する。様々なIaaSサービスが、Oracle Corporation(登録商標)によって提供されている。
【0165】
PaaSモデルが一般に使用されて、顧客がそのようなリソースを調達、構築、または維持する必要なく、顧客がアプリケーションおよびサービスを開発、実行、および管理できるようにするプラットフォームおよび環境リソースをサービスとして提供する。Oracle Corporation(登録商標)が提供するPaaSサービスの例としては、Oracle Java Cloud Service(JCS)、Oracle Database Cloud Service(DBCS)、データ管理クラウドサービス、様々なアプリケーション開発ソリューションサービスなどが挙げられるが、これらに限定されない。
【0166】
クラウドサービスは一般に、オンデマンドセルフサービスベースの、サブスクリプションベースの、弾力的に拡張可能で、信頼性が高く、可用性が高く、安全な方法で提供される。たとえば、顧客は、サブスクリプション注文を介して、クラウドインフラストラクチャシステム802によって提供される1つまたは複数のサービスを注文してもよい。クラウドインフラストラクチャシステム802は、次いで顧客のサブスクリプション注文において要求されたサービスを提供するための処理を実行する。たとえば、ユーザは、上述したように、発話を使用して、クラウドインフラストラクチャシステムに特定のアクション(たとえば、意図)を実行するように要求し、および/または本明細書で説明するようにチャットボットシステムにサービスを提供し得る。クラウドインフラストラクチャシステム802は、1つまたは複数でさえあるクラウドサービスを提供するように構成されてもよい。
【0167】
クラウドインフラストラクチャシステム802は、異なる展開モデルを介してクラウドサービスを提供し得る。パブリッククラウドモデルでは、クラウドインフラストラクチャシステム802は、サードパーティのクラウドサービスプロバイダによって所有され得、クラウドサービスは、個人または企業である任意の一般の顧客に提供される。特定の別の例では、プライベートクラウドモデルの下で、クラウドインフラストラクチャシステム802は組織内(たとえば、企業組織内)で運用され、サービスが組織内の顧客に提供され得る。たとえば、顧客は、人事部門、給与部門などのような企業の様々な部門、または企業内の個人でさえあってもよい。特定の別の例では、コミュニティクラウドモデルの下で、クラウドインフラストラクチャシステム802および提供されるサービスは、関連するコミュニティ内のいくつかの組織によって共有されてもよい。上記モデルの混成のような別の様々なモデルも使用可能である。
【0168】
クライアントコンピューティングデバイス804、806、および808は、異なるタイプ(
図7に示すクライアントコンピューティングデバイス702、704、706、および708など)のものであってもよく、1つまたは複数のクライアントアプリケーションを動作させることができてもよい。ユーザは、クライアントデバイスを使用して、クラウドインフラストラクチャシステム802によって提供されるサービスを要求するような、クラウドインフラストラクチャシステム802と対話してもよい。たとえば、ユーザは、クライアントデバイスを使用して、本開示で説明されるように、チャットボットからの情報またはアクションを要求してもよい。
【0169】
いくつかの例では、サービスを提供するためにクラウドインフラストラクチャシステム802によって実行される処理は、モデルの訓練および展開を含んでもよい。この解析は、1つまたは複数のモデルを訓練および展開するためのデータセットの使用、解析、および操作が含んでもよい。この解析は、場合によってはデータを並行で処理する、データを使用してシミュレーションを実行するような1つまたは複数のプロセッサによって実行してもよい。たとえば、ビッグデータ解析は、チャットボットシステム用の1つまたは複数のモデルを生成および訓練するために、クラウドインフラストラクチャシステム802によって実行されてもよい。この解析に使用されるデータは、構造化データ(たとえば、データベースに記憶された、または構造化モデルに従って構造化されたデータ)および/または非構造化データ(たとえば、データブロブ(バイナリラージオブジェクト))を含んでもよい。
【0170】
図8の例に示すように、クラウドインフラストラクチャシステム802は、クラウドインフラストラクチャシステム802によって提供される様々なクラウドサービスの提供を容易にするために利用されるインフラストラクチャリソース830を含んでもよい。インフラストラクチャリソース830は、たとえば、処理リソース、ストレージまたはメモリリソース、ネットワーキングリソースなどを含んでもよい。特定の例では、アプリケーションから要求されたストレージを提供するために利用可能なストレージ仮想マシンは、クラウドインフラストラクチャシステム802の一部であってもよい。別の例では、ストレージ仮想マシンは、異なるシステムの一部であってもよい。
【0171】
特定の例では、異なる顧客向けにクラウドインフラストラクチャシステム802によって提供される様々なクラウドサービスをサポートするためのこれらのリソースの効率的な供給を容易にするために、リソースは、リソースまたはリソースモジュールのセット(「ポッド」とも呼ばれる)にバンドルされてもよい。各リソースモジュールまたはポッドは、1つまたは複数のタイプのリソースの事前統合されたおよび最適化された組み合わせを含んでもよい。特定の例では、異なるポッドが、異なるタイプのクラウドサービスに対して事前に供給されてもよい。たとえば、ポッドの第1セットが、データベースサービス用に供給されてもよく、ポッドの第1セット内のポッドとは異なるリソースの異なる組み合わせを含んでもよいポッドの第2セットが、Javaサービス用に供給されてもよいなどである。一部のサービスでは、サービスを供給するために割り当てられたリソースは、サービス同士の間で共有されてもよい。
【0172】
クラウドインフラストラクチャシステム802は、それ自体、クラウドインフラストラクチャシステム802の異なる構成要素によって共有され、クラウドインフラストラクチャシステム802によるサービスの供給を容易にするサービス832を内部的に使用してもよい。これらの内部共有サービスとして、セキュリティおよびIDサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウイルススキャンおよびホワイトリストサービス、高利用可能性、バックアップおよび回復サービス、クラウドサポートを可能にするサービス、電子メールサービス、通知サービス、ファイル転送サービスなどが挙げられるが、これらに限定されない。
【0173】
クラウドインフラストラクチャシステム802は、複数のサブシステムを備えてもよい。これらのサブシステムは、ソフトウェア、ハードウェア、またはそれらの組み合わせで実装されてもよい。
図8に示すように、サブシステムは、クラウドインフラストラクチャシステム802のユーザまたは顧客がクラウドインフラストラクチャシステム802と対話できるようにするユーザインタフェイスサブシステム812を含んでもよい。ユーザインタフェイスサブシステム812は、ウェブインタフェイス814、オンラインストアインタフェイス816のような様々な異なるインタフェイスを含んでもよく、ここに、クラウドインフラストラクチャシステム802によって提供されるクラウドサービスが宣伝され、消費者および別のインタフェイス818によって購入可能である。たとえば、顧客は、クライアントデバイスを使用して、インタフェイス814、816、および818のうちの1つまたは複数を使用してクラウドインフラストラクチャシステム802によって提供される1つまたは複数のサービスを要求(サービス要求834)してもよい。たとえば、顧客は、オンラインストアにアクセスし、クラウドインフラストラクチャシステム802によって提供されるクラウドサービスを閲覧し、顧客が加入を希望するクラウドインフラストラクチャシステム802によって提供される1つまたは複数のサービスのサブスクリプション注文を出してもよい。サービス要求は、顧客を識別する情報と、顧客が加入を希望する1つまたは複数のサービスと、を含んでもよい。たとえば、顧客は、クラウドインフラストラクチャシステム802によって提供されるサービスのサブスクリプション注文を出してもよい。注文の一部として、顧客は、サービスが提供されるチャットボットシステムを識別する情報と、任意選択でチャットボットシステムについての1つまたは複数の認証情報と、を提供してもよい。
【0174】
図8に示す例のような特定の例では、クラウドインフラストラクチャシステム802は、新しい注文を処理するように構成された注文管理サブシステム(OMS)820を備えてもよい。この処理の一部として、OMS820は、まだ完了していない場合は、顧客のアカウントを作成すること、要求されたサービスを顧客に提供することに対して顧客に請求するのに使用される、請求情報および/または会計情報を顧客から受け取ること、顧客情報を確認すること、確認後に、顧客の注文を予約すること、および様々なワークフローを調整して、供給の注文を準備すること、を行うように構成されてもよい。
【0175】
適切に検証されると、次いで、OMS820は、処理、メモリ、およびネットワーキングリソースを含む注文のためのリソースを供給するように構成されている注文供給サブシステム(OPS)824を呼出してもよい。供給は、注文に対してリソースを割り当てることと、顧客の注文によってサービスが要求されることを容易にするようにリソースを構成することと、を含んでもよい。注文に対してリソースが供給される方法、および供給されるリソースのタイプは、顧客によって注文されたクラウドサービスのタイプに依存してもよい。たとえば、1つのワークフローによれば、OPS824は、要求されている特定のクラウドサービスを決定することと、その特定のクラウドサービスに対して事前構成されていてもよいポッドの数を識別することと、を行うように構成されてもよい。注文に対して割り当てられるポッドの数は、要求されたサービスのサイズ/量/レベル/範囲に依存してもよい。たとえば、割り当てられるポッドの数は、サービスによってサポートされるユーザの数、サービスが要求されている期間などに基づいて決定されてもよい。割り当てられたポッドは次いで、要求されたサービスを提供するために、特定の要求顧客向けにカスタマイズされてもよい。
【0176】
特定の例では、セットアップフェーズ処理は、上で説明したように、供給プロセスの一部としてクラウドインフラストラクチャシステム802によって実行されてもよい。クラウドインフラストラクチャシステム802は、アプリケーションIDを生成し、クラウドインフラストラクチャシステム802自体によって提供されるストレージ仮想マシンの中から、またはクラウドインフラストラクチャシステム802以外の別のシステムによって提供されるストレージ仮想マシンの中から、アプリケーションのためのストレージ仮想マシンを選択してもよい。
【0177】
クラウドインフラストラクチャシステム802は、要求されたサービスがいつ使用できるようになったかを示すために、要求する顧客に応答または通知844を送信してもよい。場合によっては、顧客が要求されたサービスの利点の使用および利用を開始できるようにする情報(たとえば、リンク)が、顧客に送信されてもよい。特定の例では、サービスを要求する顧客の場合、応答は、クラウドインフラストラクチャシステム802によって生成されたチャットボットシステムIDと、チャットボットシステムIDに対応するチャットボットシステムについてクラウドインフラストラクチャシステム802によって選択されたチャットボットシステムを識別する情報と、を含んでもよい。
【0178】
クラウドインフラストラクチャシステム802は、複数の顧客にサービスを提供してもよい。各顧客について、クラウドインフラストラクチャシステム802は、顧客から受け取られた1つまたは複数のサブスクリプション注文に関する情報を管理することと、注文に関連した顧客データを維持することと、要求されたサービスを顧客に提供することと、に責任を負う。クラウドインフラストラクチャシステム802はまた、顧客による加入サービスの使用に関する使用統計を収集してもよい。たとえば、統計が、使用されるストレージの量、転送されるデータの量、ユーザの数、システム稼働時間およびシステム故障時間の量などについて収集されてもよい。この使用法情報は、顧客への請求に使用されてもよい。請求は、たとえば、月次サイクルで行われてもよい。
【0179】
クラウドインフラストラクチャシステム802は、並行して複数の顧客にサービスを提供してもよい。クラウドインフラストラクチャシステム802は、場合によっては専有情報を含む、これらの顧客のための情報を記憶してもよい。特定の例では、クラウドインフラストラクチャシステム802は、顧客情報を管理し、ある顧客に関連する情報が別の顧客によってアクセスできないように管理情報の分離を提供するように構成されたアイデンティティ管理サブシステム(IMS)828を備える。IMS828は、情報アクセス管理、認証、および認可サービスのようなアイデンティティサービス、顧客のアイデンティティおよび役割、ならびに関連機能を管理するためのサービスなどの様々なセキュリティ関連サービスを提供するように構成されてもよい。
【0180】
図9は、コンピュータシステム900の一例を示す。いくつかの例では、コンピュータシステム900は、分散環境内のデジタルアシスタントまたはチャットボットシステムの任意のもの、および上述の様々なサーバおよびコンピュータシステムを実装するために使用されてもよい。
図9に示すように、コンピュータシステム900は、バスサブシステム902を介して多くの別のサブシステムと通信する処理サブシステム904を含む様々なサブシステムを含む。これらの別のサブシステムは、処理加速ユニット906、I/Oサブシステム908、記憶サブシステム918、および通信サブシステム924を含んでもよい。記憶サブシステム918は、記憶媒体922およびシステムメモリ910を含む非一時的コンピュータ可読記憶媒体を含んでもよい。
【0181】
バスサブシステム902は、コンピュータシステム900の様々な構成要素およびサブシステムが意図したとおりに相互に通信できるようにするメカニズムを提供する。バスサブシステム902が単一のバスとして概略的に示されているが、バスサブシステムの代替例は複数のバスを利用してもよい。バスサブシステム902は、メモリバスまたはメモリコントローラ、周辺バス、様々なバスアーキテクチャのいずれかを使用するローカルバスなどを含む、いくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、そのようなアーキテクチャは、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびPeripheral Component Interconnect(PCI)バスを含んでもよく、これは、IEEE P1386.1規格などに従って製造されたメザニンバスとして実装されてもよい。
【0182】
処理サブシステム904は、コンピュータシステム900の動作を制御し、1つまたは複数のプロセッサ、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)を含んでもよい。プロセッサは、シングルコアまたはマルチコアプロセッサを含んでもよい。コンピュータシステム900の処理リソースは、1つまたは複数の処理ユニット932、934などに編成されてもよい。処理ユニットは、1つまたは複数のプロセッサ、同じかまたは異なるプロセッサからの1つまたは複数のコア、コアとプロセッサの組み合わせ、またはコアとプロセッサの別の組み合わせを含んでもよい。いくつかの例では、処理サブシステム904は、グラフィックプロセッサ、デジタル信号プロセッサ(DSP)などの1つまたは複数の専用コプロセッサを含んでもよい。いくつかの例では、処理サブシステム904の処理ユニットの一部または全部が、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)のようなカスタマイズされた回路を使用して実装されてもよい。
【0183】
いくつかの例では、処理サブシステム904内の処理ユニットは、システムメモリ910内にまたはコンピュータ可読記憶媒体922上に記憶された命令を実行してもよい。様々な例では、処理ユニットは、様々なプログラムまたはコード命令を実行してもよく、複数の同時に実行するプログラムまたはプロセスを維持してもよい。いつでも、実行されるプログラムコードの一部または全部は、システムメモリ910内におよび/または潜在的に1つまたは複数の記憶装置を含むコンピュータ可読記憶媒体922内に常駐してもよい。適切なプログラミングによって、処理サブシステム904は、上述の様々な機能を提供してもよい。コンピュータシステム900が1つまたは複数の仮想マシンを実行している場合、1つまたは複数の処理ユニットが各仮想マシンに割り当てられてもよい。
【0184】
特定の例では、処理加速ユニット906が任意選択で、コンピュータシステム900によって実行される処理全体を加速するように、カスタマイズされた処理を実行するために、または処理サブシステム904によって実行される処理の一部をオフロードするために提供されてもよい。
【0185】
I/Oサブシステム908は、コンピュータシステム900に情報を入力するための、および/またはコンピュータシステム900からもしくはコンピューターシステム900を介して情報を出力するためのデバイスおよびメカニズムを含んでもよい。一般に、入力デバイスという用語の使用は、情報をコンピュータシステム900に入力するためのあらゆる可能なタイプの入力デバイスおよびメカニズムを含むことが意図されている。ユーザインタフェイス入力デバイスは、たとえば、キーボード、マウスまたはトラックボールのようなポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを有するオーディオ入力デバイス、マイク、および別のタイプの入力デバイスを含む場合がある。ユーザインタフェイス入力デバイスとして、ユーザが入力デバイスを制御およびそれと対話できるようにするMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャおよび音声コマンドを使用して入力を受信するためのインタフェイスを提供するデバイスのようなモーションセンシングおよび/またはジェスチャ認識デバイスがまた挙げられてもよい。ユーザインタフェイス入力デバイスはまた、ユーザの目の活動(たとえば、写真を撮っているときおよび/またはメニュー選択をしているときの「まばたき」)を検出する、および目のジェスチャを入力デバイス(たとえば、Google Glass(登録商標))への入力として変換するGoogle Glass(登録商標)まばたき検出器のようなアイジェスチャ認識デバイスを含んでもよい。それに加えて、ユーザインタフェイス入力デバイスは、ユーザが音声コマンドによって音声認識システム(たとえば、Siri(登録商標)ナビゲータ)と対話できるようにする音声認識感知デバイスを含んでもよい。
【0186】
ユーザインタフェイス入力デバイスの別の例としては、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルビデオカメラ、ポータブルメディアプレーヤ、ウェブカメラ、イメージスキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザー距離計、視線追跡デバイスのようなオーディオ/ビジュアルデバイスが挙げられるが、これらに限定されない。それに加えて、ユーザインタフェイス入力デバイスは、たとえば、コンピュータ断層撮影法、磁気共鳴画像法、位置放射断層撮影法、および医療用超音波検査装置のような医療用画像入力装置を含んでもよい。ユーザインタフェイス入力デバイスはまた、たとえば、MIDIキーボード、デジタル楽器などのような音声入力デバイスを含んでもよい。
【0187】
一般に、出力デバイスという用語の使用は、コンピュータシステム900からユーザまたは別のコンピュータに情報を出力するためのあらゆる可能なタイプのデバイスおよびメカニズムを含むことが意図されている。ユーザインタフェイス出力デバイスとしては、ディスプレイサブシステム、インジケータライト、またはオーディオ出力デバイスなどのような非視覚的ディスプレイが挙げられてもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイ、投影装置、タッチスクリーンなどを使用するもののようなフラットパネルデバイスであってもよい。たとえば、ユーザインタフェイス出力デバイスとしては、テキスト、グラフィックス、ならびにモニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイス、およびモデムのようなオーディオ/ビデオ情報を視覚的に伝達する様々な表示デバイスが挙げられるが、これらに限定されない。
【0188】
記憶サブシステム918は、コンピュータシステム900によって使用される情報およびデータを記憶するためのリポジトリまたはデータストアを提供する。記憶サブシステム918は、いくつかの例の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための有形の非一時的コンピュータ可読記憶媒体を提供する。記憶サブシステム918は、処理サブシステム904によって実行されると上述の機能を提供するソフトウェア(たとえば、プログラム、コードモジュール、命令)を記憶してもよい。ソフトウェアは、処理サブシステム904の1つまたは複数の処理ユニットによって実行されてもよい。記憶サブシステム918はまた、本開示の教示に従って認証を提供してもよい。
【0189】
記憶サブシステム918は、揮発性および不揮発性メモリデバイスを含む、1つまたは複数の非一時的メモリデバイスを含んでもよい。
図9に示すように、記憶サブシステム918は、システムメモリ910およびコンピュータ可読記憶媒体922を含む。システムメモリ910としては、プログラム実行中の命令およびデータを記憶するための揮発性メインランダムアクセスメモリ(RAM)を含む多数のメモリ、および固定命令が記憶されている不揮発性読取り専用メモリ(ROM)またはフラッシュメモリが挙げられてもよい。いくつかの実装形態では、起動中などで、コンピュータシステム900内の要素同士の間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム(BIOS)が、通常、ROMに記憶されてもよい。RAMは、通常、処理サブシステム904によって現在操作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実装形態では、システムメモリ910は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)などのような複数の異なるタイプのメモリを含んでもよい。
【0190】
限定ではなく一例として、
図9に示すように、システムメモリ910は、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などの様々なアプリケーションを含み得る、実行中のアプリケーションプログラム912、プログラムデータ914、およびオペレーティングシステム916をロードしてもよい。一例として、オペレーティングシステム916は、様々なバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinuxオペレーティングシステムの様々なバージョン、様々な市販のUNIX(登録商標)またはUNIXのようなオペレーティングシステム(限定ではなく、様々なGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含む)および/または、iOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)OS、Palm(登録商標)OSオペレーティングシステムなどのようなモバイルオペレーティングシステムを含んでもよい。
【0191】
コンピュータ可読記憶媒体922は、いくつかの例の機能を提供するプログラミングおよびデータ構造を記憶してもよい。コンピュータ可読媒体922は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータシステム900の別のデータのストレージを提供してもよい。処理サブシステム904によって実行されると、上述の機能を提供するソフトウェア(プログラム、コードモジュール、命令)が、記憶サブシステム918内に記憶されてもよい。例として、コンピュータ可読記憶媒体922は、ハードディスクドライブ、磁気ディスクドライブ、CD ROM、DVD、Blu-Ray(登録商標)ディスク、または別の光学メディアのような光学ディスクドライブのような不揮発性メモリを含んでもよい。コンピュータ可読記憶媒体922としては、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含んでもよいが、これらに限定されない。コンピュータ可読記憶媒体922はまた、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどのような不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDの組み合わせを使用するハイブリッドSSDのような揮発性メモリに基づくSSDを含んでもよい。
【0192】
特定の例では、記憶サブシステム918は、コンピュータ可読記憶媒体922にさらに接続されてもよいコンピュータ可読記憶媒体リーダ920も含んでもよい。リーダ920は、たとえば、ディスク、フラッシュドライブなどのようなメモリデバイスからデータを受信し、読み出すように構成されてもよい。
【0193】
特定の例では、コンピュータシステム900は、処理およびメモリリソースの仮想化を含むがこれに限定されない仮想化技術をサポートし得る。たとえば、コンピュータシステム900は、1つまたは複数の仮想マシンを実行するためのサポートを提供してもよい。特定の例では、コンピュータシステム900は、仮想マシンの構成および管理を容易にするハイパーバイザのようなプログラムを実行してもよい。各仮想マシンは、割り当てられたメモリ、計算(たとえば、プロセッサ、コア)、I/O、およびネットワークリソースであってもよい。各仮想マシンは通常、別の仮想マシンから独立して実行する。仮想マシンは通常、独自のオペレーティングシステムを実行し、そのオペレーティングシステムは、コンピュータシステム900によって実行される別の仮想マシンによって実行されるオペレーティングシステムと同じであっても異なっていてもよい。したがって、複数のオペレーティングシステムが、潜在的にコンピュータシステム900によって同時に実行されてもよい。
【0194】
通信サブシステム924は、別のコンピュータシステムおよびネットワークへのインタフェイスを提供する。通信サブシステム924は、コンピュータシステム900からデータを受信し、別のシステムにデータを送信するためのインタフェイスとして機能する。たとえば、通信サブシステム924は、コンピュータシステム900がインターネットを介して1つまたは複数のクライアントデバイスへの通信チャネルを確立することにより、クライアントデバイスとの間で情報を送受信することを可能にする。たとえば、コンピュータシステム900が使用されて
図1に示すボットシステム120を実装する場合、通信サブシステムは、アプリケーション用に選択されたチャットボットシステムと通信するために使用されてもよい。
【0195】
通信サブシステム924は、有線および/または無線通信プロトコルの両方をサポートしてもよい。特定の例では、通信サブシステム924は、無線音声および/またはデータネットワーク(たとえば、携帯電話技術、高度データネットワーク技術を使用する)にアクセスするための無線周波数(RF)トランシーバ構成要素、たとえば、3G、4G、もしくはEDGE(グローバルエボリューション用の拡張データレート)、WiFi(IEEE802.XXファミリー標準、もしくは別のモバイル通信技術、またはそれらの任意の組み合わせ)、全地球測位システム(GPS)受信機構成要素、および/または別の構成要素を含んでもよい。いくつかの例では、通信サブシステム924は、無線インタフェイスに追加して、またはそれに代替して有線ネットワーク接続(たとえば、イーサネット)を提供してもよい。
【0196】
通信サブシステム924は、様々な形式でデータを送受信してもよい。いくつかの例では、別の形式に追加して、通信サブシステム924は、構造化および/または非構造化データフィード926、イベントストリーム928、イベント更新930などの形式で入力通信を受信し得る。たとえば、通信サブシステム924は、Twitter(登録商標)フィード、Facebook(登録商標)更新情報、リッチサイト概要(RSS)フィードのようなウェブフィード、および/または1つまたは複数のサードパーティ情報ソースからのリアルタイム更新のようなソーシャルメディアネットワークおよび/または別の通信サービスのユーザからリアルタイムでデータフィード926を受信(または送信)するように構成されてもよい。
【0197】
特定の例では、通信サブシステム924は、明確な終わりを伴わない本質的に連続的または無制限であってもよい、リアルタイムのイベントおよび/またはイベント更新930のイベントストリーム928を含んでもよい、連続データストリームの形式でデータを受信するように構成され得る。連続データを生成するアプリケーションの例は、たとえば、センサデータアプリケーション、金融ティッカー、ネットワークパフォーマンス測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などを含んでもよい。
【0198】
通信サブシステム924はまた、コンピュータシステム900から別のコンピュータシステムまたはネットワークにデータを通信するように構成されてもよい。データは、コンピュータシステム900に結合された1つまたは複数のストリーミングデータソースコンピュータと通信し得る1つまたは複数のデータベースに、構造化および/または非構造化データフィード926、イベントストリーム928、イベント更新930などのような様々な異なる形式で通信されてもよい。
【0199】
コンピュータシステム900は、様々なタイプのうちの1つであってもよく、該タイプは、ハンドヘルドポータブルデバイス(たとえば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえば、Google Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の別のデータ処理システムを含む。コンピュータおよびネットワークの性質は常に変化するため、
図9に示すコンピュータシステム900についての説明は、特定の例としてのみ意図されている。
図9に示されるシステムよりも多いかまたは少ない構成要素を有する多くの別の構成が、可能である。本明細書で提供される開示および教示に基づいて、様々な例を実装するための別の態様および/または方法があることを理解されたい。
【0200】
具体例を説明してきたが、様々な修正、代替、代替構成、および均等物が可能である。例は、特定の具体的なデータ処理環境内での操作に限定されず、複数のデータ処理環境内で自由に操作する。それに追加して、特定の一連のトランザクションおよびステップを使用して特定の例を説明したが、これが限定を意図するものではないことは当業者には明らかである。一部のフローチャートは、操作を逐次的な処理として説明するけれども、操作の多くは、並行してまたは同時に実行されてもよい。さらに、操作の順序は並べ替えられてもよい。処理は、図に含まれていない追加のステップを含んでもよい。上述の例についての様々な特徴および側面は、個別にまたは組み合わせて使用されてもよい。
【0201】
さらに、特定の例が、ハードウェアとソフトウェアとの特定の組み合わせを使用して説明されてきたが、ハードウェアとソフトウェアとの別の組み合わせも可能であることを認識されたい。特定の例は、ハードウェアのみで、またはソフトウェアのみで、またはそれらの組み合わせを使用して実装されてもよい。本明細書で説明された様々な処理が、同じプロセッサ上で実装されてもよく、または任意の組み合わせでの異なるプロセッサ上で実装されてもよい。
【0202】
デバイス、システム、構成要素、またはモジュールが、特定の動作または機能を実行するように構成されていると説明されている場合、そのような構成は、たとえば、動作を実行する電子回路を設計することによって、プログラマブル電子回路(マイクロプロセッサのような)をプログラミングすることによって、達成されることにより、コンピュータ命令もしくはコード、または非一時的メモリ媒体に記憶されたコードもしくは命令を実行するようにプログラムされたプロセッサもしくはコア、またはそれらの任意の組合わせを実行することによってのような動作を実行してもよい。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されない様々な技術を使用して通信してもよく、プロセスの異なるペアが異なる技術を使用してもよく、またはプロセスの同じペアが異なる時点で異なる技術を使用してもよい。
【0203】
具体的な詳細が本開示で与えられて、例についての完全な理解を提供する。ただし、例は、これらの特定の詳細によらずに実施されてもよい。たとえば、周知の回路、プロセス、アルゴリズム、構造、および技術が、不必要な詳細を省略して示されることにより、例を分かりにくくすることを回避する。この説明は、例示的な例のみを提供し、別の例の範囲、適用性、または構成を制限することが意図されていない。むしろ、例の前述の説明は、当業者に様々な例を実施するための可能な説明を提供するであろう。様々な変更が、要素の機能および配置になされてもよい。
【0204】
明細書および図面は、したがって、限定的な意味ではなく、例示的な意味にあるとみなされるべきである。しかしながら、追加、控除、削除、ならびに別の修正および変更が、特許請求の範囲に記載されたより広い趣旨および範囲から逸脱することなく、これらになされてもよいことが明らかになるだろう。したがって、特定の例が説明されてきたが、これらは限定することを意図したものではない。様々な修正および均等物は、以下の特許請求の範囲内にある。
【0205】
上記の明細書では、本開示の態様がその具体例を参照して説明されてきたが、当業者であれば、本開示がそれらに限定されないことを認識するであろう。上述の開示についての様々な特徴および態様は、個別にまたは組み合わせて使用されてもよい。さらに、例は、本明細書のより広い趣旨および範囲から逸脱することなく、本明細書に記載されているものを超えて、任意の数の環境および用途において利用されてもよい。明細書および図面は、したがって、限定的なものではなく、例示的なものとみなされるべきである。
【0206】
前述の説明では、説明の目的で、方法が特定の順序で説明された。代替例では、方法は、説明された順序とは異なる順序で実行されてもよいことを理解されたい。また、上述の方法は、ハードウェア構成要素によって実行されてもよく、または機械実行可能命令のシーケンスで具体化されてもよく、これらは、汎用もしくは専用のプロセッサまたは命令によってプログラムされたロジック回路のような機械に方法を実行させるために使用されてもよいことを理解されたい。これらの機械実行可能命令は、CD-ROMまたは別のタイプの光ディスク、フロッピーディスケット、ROM、RAM、EPROM、EEPROM、磁気カードもしくは光カード、フラッシュメモリ、または電子命令を記憶するのに適した別のタイプの機械可読媒体のような、1つまたは複数の機械可読媒体に記憶されてもよい。その代替として、方法は、ハードウェアとソフトウェアとの組み合わせによって実行されてもよい。
【0207】
構成要素が特定の操作を実行するように構成されているとして説明される場合、そのような構成は、たとえば、その操作を実行するための電子回路または別のハードウェアを設計することによって、操作を実行するためのプログラマブル電子回路(たとえば、マイクロプロセッサ、または別の適切な電子回路)をプログラムすることによって、またはそれらの任意の組み合わせによって達成される。
【0208】
アプリケーションの例示的な例が、本明細書で詳細に説明されてきたが、本発明の概念が、別の態様で様々に具体化および使用され得ること、ならびに添付の特許請求の範囲が、従来技術によって制限される場合を除き、そのような変形を含むように解釈されることが意図されていることを理解されたい。
【国際調査報告】