(57)【特許請求の範囲】
【請求項１】
1つまたは複数のプロセッサと、
1つまたは複数のコンピュータ可読記憶媒体とを備えたコンピューティングデバイスであって、前記1つまたは複数のコンピュータ可読記憶媒体が、
前記1つまたは複数のプロセッサによって実装される1つまたは複数のアプリケーションと、
前記1つまたは複数のアプリケーションから受け取られた訓練事例を記憶する集中事例データベースと、
前記1つまたは複数のプロセッサに、以下の動作を行うオンデバイス機械学習プラットフォームを実装させる命令とを記憶し、前記動作が、
収集アプリケーションプログラミングインタフェースを介して、前記1つまたは複数のアプリケーションのうちの第1のアプリケーションから新たな訓練事例を受け取ることと、
前記コンピューティングデバイスと関連するコンテキストを記述した1つまたは複数のコンテキスト特徴を決定することと、
前記コンピューティングデバイスに記憶されている機械学習済みモデルを訓練する際の使用のために、前記集中事例データベースに前記1つまたは複数のコンテキスト特徴と共に前記新たな訓練事例を記憶することとを含む、
コンピューティングデバイス。
【請求項２】
前記動作が、
前記新たな訓練事例を記憶する前に、1つまたは複数のコンテキスト型の各々に対する前記第1のアプリケーションの許可状況を決定することであって、前記第1のアプリケーションおよび各コンテキスト型に対する前記許可状況が、前記第1のアプリケーションがコンテキスト型にアクセスする許可を有するかどうかを記述している、ことをさらに含み、
前記1つまたは複数のコンテキスト特徴と共に前記新たな訓練事例を記憶することが、
前記第1のアプリケーションがアクセスする許可を有するコンテキスト型に含まれるコンテキスト特徴のみと共に前記新たな訓練事例を記憶することを含む、
請求項1に記載のコンピューティングデバイス。
【請求項３】
前記動作が、
1つまたは複数のコンテキスト更新に基づいて、コンテキスト特徴のコンテキスト特徴キャッシュを維持することをさらに含み、
前記コンピューティングデバイスと関連する前記コンテキストを記述した前記1つまたは複数のコンテキスト特徴を決定することが、
前記コンテキスト特徴キャッシュから前記1つまたは複数のコンテキスト特徴にアクセスすることを含む、
請求項1または2に記載のコンピューティングデバイス。
【請求項４】
前記コンピューティングデバイスと関連する前記コンテキストを記述した前記1つまたは複数のコンテキスト特徴を決定することが、
前記新たな訓練事例の受取りに応じてコンテキストマネージャに前記1つまたは複数のコンテキスト特徴を要求することを含む、
請求項1から3のいずれか一項に記載のコンピューティングデバイス。
【請求項５】
前記集中事例データベースが、前記1つまたは複数のアプリケーションによって直接アクセス可能でなく、これにより、前記1つまたは複数のコンテキスト特徴は前記第1のアプリケーションにアクセス可能でない、
請求項1から4のいずれか一項に記載のコンピューティングデバイス。
【請求項６】
前記1つまたは複数のコンピュータ可読記憶媒体が、1つまたは複数の機械学習済みモデルをさらに記憶し、
前記動作が、
予測アプリケーションプログラミングインタフェースを介して前記第1のアプリケーションから入力データを受け取ることと、
前記コンピューティングデバイスと関連する前記コンテキストを記述した1つまたは複数の追加コンテキスト特徴を決定することと、
前記1つまたは複数の機械学習済みモデルのうちの少なくとも第1の機械学習済みモデルを利用して、前記入力データに基づいて、かつさらに前記1つまたは複数の追加コンテキスト特徴に基づいて、少なくとも1つの推論を生成することと、
前記予測アプリケーションプログラミングインタフェースを介して前記第1のアプリケーションに、前記第1の機械学習済みモデルによって生成された前記少なくとも1つの推論を提供することとをさらに含む、
請求項1から5のいずれか一項に記載のコンピューティングデバイス。
【請求項７】
前記1つまたは複数のコンピュータ可読記憶媒体が1つまたは複数の機械学習済みモデルをさらに記憶し、
前記動作が、
訓練アプリケーションプログラミングインタフェースを介して前記第1のアプリケーションから、前記集中事例データベースに記憶されている1つまたは複数の訓練事例に基づいて前記1つまたは複数の機械学習済みモデルのうちの第1の機械学習済みモデルを再訓練するようにとの命令を受け取ることと、
前記命令に応じて、前記第1の機械学習済みモデルを、前記集中事例データベースに記憶されている前記1つまたは複数のコンテキスト特徴と共に前記新たな訓練事例に基づいて再訓練させることとをさらに含む、
請求項1から6のいずれか一項に記載のコンピューティングデバイス。
【請求項８】
前記第1のアプリケーションが、前記新たな訓練事例と関連する特定のユーザアカウントを特定し、
前記1つまたは複数のコンテキスト特徴を決定することが、
前記特定のユーザアカウントと関連する前記コンテキストを記述した前記1つまたは複数のコンテキスト特徴を決定することを含む、
請求項1から7のいずれか一項に記載のコンピューティングデバイス。
【請求項９】
前記集中事例データベースに前記1つまたは複数のコンテキスト特徴と共に前記新たな訓練事例を記憶することが、
前記1つまたは複数のコンテキスト特徴のうちの少なくとも第1のコンテキスト特徴に満了期間を割り当てることを含み、
前記動作が、
前記第1のコンテキスト特徴に割り当てられる前記満了期間の終結において前記集中事例データベースから前記第1のコンテキスト特徴または前記新たな訓練事例全体を削除することをさらに含む、
請求項1から8のいずれか一項に記載のコンピューティングデバイス。
【請求項１０】
前記動作が、
少なくとも1つのコンテキスト型に対する前記第1のアプリケーションの許可状況の変化の指示を受け取ることと、
前記許可状況の前記変化に応じて、前記第1のアプリケーションと関連する訓練事例と関連付けられる前記少なくとも1つのコンテキスト型のいかなるコンテキスト特徴も前記集中事例データベースから削除することとをさらに含む、
請求項1から9のいずれか一項に記載のコンピューティングデバイス。
【請求項１１】
前記動作が、
前記コンテキスト特徴を削除した後に、前記集中事例データベースにおける前記第1のアプリケーションと関連する前記訓練事例を使用して前記第1のアプリケーションと関連する1つまたは複数の機械学習済みモデルを再訓練することをさらに含む、
請求項10に記載のコンピューティングデバイス。
【請求項１２】
1つまたは複数のプロセッサに、以下の動作を行うオンデバイス機械学習プラットフォームを実装させる命令を記憶するコンピュータ可読記憶媒体であって、前記動作が、
予測アプリケーションプログラミングインタフェースを介して、コンピューティングデバイスに記憶されている1つまたは複数のアプリケーションのうちの第1のアプリケーションから入力データを受け取ることと、
前記コンピューティングデバイスと関連するコンテキストを記述した1つまたは複数のコンテキスト特徴を決定することと、
前記コンピューティングデバイスに記憶されている1つまたは複数の機械学習済みモデルのうちの少なくとも第1の機械学習済みモデルを利用して、前記入力データに基づいて、かつさらに前記1つまたは複数のコンテキスト特徴に基づいて、少なくとも1つの推論を生成することと、
前記予測アプリケーションプログラミングインタフェースを介して前記第1のアプリケーションに、前記第1の機械学習済みモデルによって生成された前記少なくとも1つの推論を提供することとを含む、
コンピュータ可読記憶媒体。
【請求項１３】
前記動作が、
少なくとも前記第1の機械学習済みモデルを利用する前に、1つまたは複数のコンテキスト型の各々に対する前記第1のアプリケーションの許可状況を決定することであって、前記第1のアプリケーションおよび各コンテキスト型に対する前記許可状況が、前記第1のアプリケーションがコンテキスト型にアクセスする許可を有するかどうかを記述している、ことをさらに含み、
少なくとも前記第1の機械学習済みモデルを利用することが、
少なくとも前記第1の機械学習済みモデルを利用して、前記第1のアプリケーションがアクセスする許可を有するコンテキスト型に含まれるコンテキスト特徴のみを使用して、前記少なくとも1つの推論を生成することを含む、
請求項12に記載のコンピュータ可読記憶媒体。
【請求項１４】
前記動作が、
1つまたは複数のコンテキスト更新に基づいて、コンテキスト特徴のコンテキスト特徴キャッシュを維持することをさらに含み、
前記コンピューティングデバイスと関連する前記コンテキストを記述した前記1つまたは複数のコンテキスト特徴を決定することが、
前記コンテキスト特徴キャッシュから前記1つまたは複数のコンテキスト特徴にアクセスすることを含む、
請求項12または13に記載のコンピュータ可読記憶媒体。
【請求項１５】
前記コンピューティングデバイスと関連する前記コンテキストを記述した前記1つまたは複数のコンテキスト特徴を決定することが、
前記入力データの受取りに応じて、コンテキストマネージャに前記1つまたは複数のコンテキスト特徴を要求することを含む、
請求項12から14のいずれか一項に記載のコンピュータ可読記憶媒体。
【請求項１６】
前記第1のアプリケーションが、前記入力データと関連する特定のユーザアカウントを特定し、
前記1つまたは複数のコンテキスト特徴を決定することが、
前記特定のユーザアカウントと関連する前記コンテキストを記述した前記1つまたは複数のコンテキスト特徴を決定することを含む、
請求項12から15のいずれか一項に記載のコンピュータ可読記憶媒体。
【請求項１７】
コンピュータで実行される方法であって、
収集アプリケーションプログラミングインタフェースを介してコンピューティングデバイスによって、前記コンピューティングデバイスに記憶されている1つまたは複数のアプリケーションのうちの第1のアプリケーションから新たな訓練事例を受け取るステップと、
前記コンピューティングデバイスによって、前記コンピューティングデバイスと関連するコンテキストを記述した1つまたは複数のコンテキスト特徴を決定するステップと、
前記コンピューティングデバイスによって、前記コンピューティングデバイスに記憶されている機械学習済みモデルを訓練する際の使用のために、前記コンピューティングデバイスの集中事例データベースに前記1つまたは複数のコンテキスト特徴と共に前記新たな訓練事例を記憶するステップとを含む、
コンピュータで実行される方法。
【請求項１８】
前記方法は、
前記新たな訓練事例を記憶する前に、前記コンピューティングデバイスによって、1つまたは複数のコンテキスト型の各々に対する前記第1のアプリケーションの許可状況を決定するステップであって、前記第1のアプリケーションおよび各コンテキスト型に対する前記許可状況が、前記第1のアプリケーションがコンテキスト型にアクセスする許可を有するかどうかを記述している、ステップをさらに含み、
前記コンピューティングデバイスによって、前記1つまたは複数のコンテキスト特徴と共に前記新たな訓練事例を記憶するステップが、
前記コンピューティングデバイスによって、第1のアプリケーションがアクセスする許可を有するコンテキスト型に含まれるコンテキスト特徴のみと共に前記新たな訓練事例を記憶するステップを含む、
請求項17に記載のコンピュータで実行される方法。
【請求項１９】
予測アプリケーションプログラミングインタフェースを介して前記コンピューティングデバイスによって、前記第1のアプリケーションから入力データを受け取るステップと、
前記コンピューティングデバイスによって、前記コンピューティングデバイスと関連する前記コンテキストを記述した1つまたは複数の追加コンテキスト特徴を決定するステップと、
前記コンピューティングデバイスによって、前記コンピューティングデバイスに記憶されている1つまたは複数の機械学習済みモデルのうちの少なくとも第1の機械学習済みモデルを利用して、前記入力データに基づいてかつ更に前記1つまたは複数の追加コンテキスト特徴に基づいて少なくとも1つの推論を生成するステップと、
前記予測アプリケーションプログラミングインタフェースを介して前記コンピューティングデバイスによって、前記第1のアプリケーションに前記第1の機械学習済みモデルによって生成された前記少なくとも1つの推論を提供するステップとをさらに含む、
請求項17または18に記載のコンピュータで実行される方法。
【請求項２０】
訓練アプリケーションプログラミングインタフェースを介して前記コンピューティングデバイスによって、前記第1のアプリケーションから、前記集中事例データベースに含まれる1つまたは複数の訓練事例に基づいて、前記コンピューティングデバイスによって記憶される1つまたは複数の機械学習済みモデルのうちの第1の機械学習済みモデルを再訓練するようにとの命令を受け取るステップと、
前記命令に応じて、前記コンピューティングデバイスによって、前記第1の機械学習済みモデルを前記集中事例データベースに記憶されている前記1つまたは複数のコンテキスト特徴と共に前記新たな訓練事例に基づいて再訓練させるステップとをさらに含む、
請求項17から19のいずれか一項に記載のコンピュータで実行される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は概して機械学習に関する。より詳細には、本開示は、オンデバイス予測、訓練、事例収集および/または他の機械学習タスクもしくは機能性を可能にするオンデバイス機械学習プラットフォームおよび関連技術に関する。
【背景技術】
【０００２】
近年、コンピューティングデバイスのユーザに改善されたサービスを提供するために、機械学習がますます使用されている。特に、多くのアプリケーションまたは他のコンピューティングプログラムもしくはシステムが1つまたは複数の機械学習済みモデルに依存して、プログラム、デバイスおよび/またはユーザと関連する入力データに基づいて推論を発生する。アプリケーションは推論を使用して、任意の種類のタスクもしくはサービスを行うまたはそれに影響を与えることができる。
【０００３】
機械学習問題を解決するための1つの従来の訓練方式は、複数のコンピューティングデバイス(例えば、スマートフォンなどのユーザデバイス)から複数の訓練事例を集中位置(例えばサーバデバイス)において収集することを含む。収集した訓練事例に基づいて集中位置において次いで機械学習済みモデルを訓練できる。
【０００４】
加えて、一部の実例では、訓練したモデルは集中位置において記憶できる。モデルから推論を受信するために、ユーザコンピューティングデバイスは、ネットワークを通じてサーバコンピューティングデバイスに入力データを送信し、サーバデバイスが機械学習済みモデルを実装して送信データに基づいて推論を発生するのを待ち、次いで再びネットワークを通じてサーバコンピューティングデバイスから推論を受信することが要求される。
【０００５】
そのようなシナリオでは、訓練事例および/または推論は、ネットワークを通じてユーザコンピューティングデバイスとサーバコンピューティングデバイスとの間で送信されることが要求される。ネットワークを通じて送信されるデータは傍受を受けやすいので、そのようなネットワーク送信はデータセキュリティリスクを表す。加えて、そのようなネットワーク送信はネットワークトラフィックを増加させ、結果として低下された通信速度になり得る。更に、ネットワークを通じてデータを行ったり来たり送信することと関連する待ち時間は、アプリケーションのサービスを提供する際に遅延をもたらし得る。
【０００６】
最近では、或るアプリケーションが、アプリケーション内に記憶されてユーザデバイス上にアプリケーションによって実装される機械学習済みモデルを含んだ。しかしながら、このアーキテクチャは実装困難でもあり資源集約的でもある。例えば、そのようなシナリオでは、アプリケーションは、1つまたは複数の機械学習済みモデルを記憶、管理、訓練および/または実装することが要求される。アプリケーション自体内へのモデルおよび対応するサポートサービスの包含はアプリケーションのデータサイズを増加させ、結果としてより大きなメモリフットプリントになり得る。
【０００７】
アプリケーション内の機械学習は、より頻繁なアプリケーション更新も必要とし得る。例えば、アプリケーションは、基底となる機械学習エンジンが更新されるまたはさもなければ進化するにつれて更新される必要があり得る。アプリケーション更新は、更新がダウンロードおよびインストールされるときにユーザに対してネットワーク使用およびダウンタイムを望ましくなく必要とし得る。
【０００８】
更には、アプリケーション内の機械学習は、追加のサービスがアプリケーション自体へ組み込まれる必要があるので、アプリケーション開発も複雑にし得る。このように、開発者は、種々の機械学習エンジンの複雑さを知って、それらに通じていることが要求されることがある。
【発明の概要】
【課題を解決するための手段】
【０００９】
本開示の実施形態の態様および利点は以下の説明に部分的に明らかにされることになる、または同説明から知ることができる、または実施形態の実施を通して知ることができる。
【００１０】
本開示の1つの態様は、コンピューティングデバイスを対象とする。コンピューティングデバイスは、1つまたは複数のプロセッサと、1つまたは複数の非一時的コンピュータ可読媒体とを含む。1つまたは複数の非一時的コンピュータ可読媒体は、1つまたは複数のプロセッサによって実装される1つまたは複数のアプリケーションと、1つまたは複数のアプリケーションから受け取られる訓練事例を記憶する集中事例データベースと、1つまたは複数のプロセッサによって実行されると、コンピューティングデバイスに、動作を行うオンデバイス機械学習プラットフォームを実装させる命令とを記憶する。同動作は、収集アプリケーションプログラミングインタフェースを介して1つまたは複数のアプリケーションのうちの第1のアプリケーションから新たな訓練事例を受け取ることを含む。同動作は、コンピューティングデバイスと関連するコンテキストを記述した1つまたは複数のコンテキスト特徴を決定することを含む。同動作は、コンピューティングデバイスによって記憶される機械学習済みモデルを訓練する際の使用のために集中事例データベースに1つまたは複数のコンテキスト特徴と共に新たな訓練事例を記憶することを含む。
【００１１】
本開示の別の態様は、1つまたは複数のプロセッサによって実行されると、コンピューティングデバイスに、動作を行うオンデバイス機械学習プラットフォームを実装させる命令を記憶する1つまたは複数の非一時的コンピュータ可読媒体を対象とする。同動作は、予測アプリケーションプログラミングインタフェースを介してコンピューティングデバイスに記憶される1つまたは複数のアプリケーションのうちの第1のアプリケーションから入力データを受け取ることを含む。同動作は、コンピューティングデバイスと関連するコンテキストを記述した1つまたは複数のコンテキスト特徴を決定することを含む。同動作は、コンピューティングデバイスに記憶される1つまたは複数の機械学習済みモデルのうちの少なくとも第1の機械学習済みモデルを利用して、入力データに少なくとも部分的に基づいてかつ更に1つまたは複数のコンテキスト特徴に少なくとも部分的に基づいて少なくとも1つの推論を生成することを含む。同動作は、予測アプリケーションプログラミングインタフェースを介して第1のアプリケーションに第1の機械学習済みモデルによって生成される少なくとも1つの推論を提供することを含む。
【００１２】
本開示の別の態様は、コンピュータで実行される方法を対象とする。本方法は、収集アプリケーションプログラミングインタフェースを介してコンピューティングデバイスによって、コンピューティングデバイスによって記憶される1つまたは複数のアプリケーションのうちの第1のアプリケーションから新たな訓練事例を受け取ることを含む。本方法は、コンピューティングデバイスによって、コンピューティングデバイスと関連するコンテキストを記述した1つまたは複数のコンテキスト特徴を決定することを含む。本方法は、コンピューティングデバイスによって、コンピューティングデバイスによって記憶される機械学習済みモデルを訓練する際の使用のためにコンピューティングデバイスの集中事例データベースに1つまたは複数のコンテキスト特徴と共に新たな訓練事例を記憶することを含む。
【００１３】
本開示の他の態様は、様々なシステム、装置、非一時的コンピュータ可読媒体、ユーザインタフェースおよび電子デバイスを対象とする。
【００１４】
本開示の様々な実施形態のこれらおよび他の特徴、態様および利点は、以下の説明および添付の請求項を参照しつつよりよく理解されるようになるであろう。添付図面は、本明細書に組み込まれてその一部を構成するが、本開示の実施形態例を例示し、かつ説明と共に、関連原理を説明する役目をする。
【００１５】
当業者を対象とする実施形態の詳細な考察が、添付の図を参照しつつ、本明細書に明らかにされる。
【図面の簡単な説明】
【００１６】
【図１】本開示の実施形態例に係るオンデバイス機械学習プラットフォームを含むコンピューティングシステム例のブロック図を示す。
【図２】本開示の実施形態例に係る機械学習済みモデル展開例のグラフィック図を示す。
【図３】本開示の実施形態例に係る個別化および連合学習データフロー例のグラフィック図を示す。
【図４】本開示の実施形態例に係るオンデバイス機械学習プラットフォーム例のブロック図を示す。
【図５Ａ】本開示の実施形態例に係るコンテキスト特徴を注入する機械学習プラットフォーム例のブロック図を示す。
【図５Ｂ】本開示の実施形態例に係るコンテキスト特徴を注入する機械学習プラットフォーム例のブロック図を示す。
【図６Ａ】本開示の実施形態例に係るモデル訓練を行うデバイス例のブロック図を示す。
【図６Ｂ】本開示の実施形態例に係るモデル訓練を行うデバイス例のブロック図を示す。
【図７】本開示の実施形態例に係る連合学習プロセス例のグラフィック図を示す。
【図８】本開示の実施形態例に係る機械学習済みモデルを使用して推論を生成する方法例のフローチャートを示す。
【図９】本開示の実施形態例に係る機械学習を行うための訓練事例を収集する方法例のフローチャートを示す。
【図１０】本開示の実施形態例に係る機械学習済みモデルを訓練する方法例のフローチャートを示す。
【発明を実施するための形態】
【００１７】
概して、本開示は、オンデバイス機械学習のためのシステムおよび方法を対象とする。特に、本開示は、「機械学習機能」と集合的に称されてよい、オンデバイス予測、訓練、事例収集および/または他の機械学習タスクもしくは機能性を可能にするオンデバイス機械学習プラットフォームおよび関連技術を対象とする。
【００１８】
オンデバイス機械学習プラットフォームは、コンピューティングデバイスまたは端末(例えば、スマートフォンまたはタブレット)にローカルに記憶される1つまたは複数のコンピュータプログラムの形態でよく、それらは、ユーザデバイスまたは端末によって実行されると、1つまたは複数のローカルに記憶されるアプリケーション、ルーチンまたは他のローカルクライアントのためのオンデバイス機械学習機能の遂行を可能にする機械学習管理動作を行うように構成される。オンデバイス機械学習機能の少なくとも一部は、コンピューティングデバイスまたは端末にローカルに実装される1つまたは複数の機械学習エンジンを使用して行われてよい。1つまたは複数のローカルに記憶されるアプリケーションまたはルーチン(「クライアント」と称されてよい)のためのオンデバイス機械学習機能の遂行は、それらのクライアントへの集中サービスとして提供されてよく、それらは1つまたは複数のアプリケーションプログラミングインタフェース(API)を介してオンデバイス機械学習プラットフォームと対話してよい。
【００１９】
加えて、一部の実装例では、オンデバイス機械学習プラットフォームは、予測/推論を生成するために使用される収集した訓練事例および/またはクライアント提供の入力データへコンテキスト特徴を確実に注入するコンテキストプロバイダを含むことができる。このように、オンデバイス機械学習プラットフォームは、アプリケーションまたは他のクライアントへのサービスとして集中訓練事例収集、モデル訓練および機械学習済みモデルの使用を可能にすることができる。
【００２０】
より詳細には、例えば、モバイルコンピューティングデバイス(例えば、スマートフォン)などのコンピューティングデバイスが1つまたは複数のアプリケーション(例えば、モバイルアプリケーション)を記憶するまたはその他含むことができる。コンピューティングデバイスは、オンデバイス機械学習プラットフォームおよび1つまたは複数の機械学習済みモデルも含むおよび実装することができる。例えば、機械学習済みモデルは、プラットフォームによって管理される集中モデル層にデバイスによって記憶できる。
【００２１】
本開示の1つの態様によれば、アプリケーションは、API(「予測API」と称されてよい)を介してオンデバイス機械学習プラットフォームと通信して、入力データを提供し、そして機械学習済みモデルの1つまたは複数から入力データに基づいて予測を得ることができる。一例として、一部の実装例では、予測プラン(例えば、モデルを走らせて推論/予測を得るための命令)およびモデルパラメータに対する統一資源識別子(URI)が与えられると、オンデバイス機械学習プラットフォームは、URI内容(例えば、予測プランおよびパラメータ)をダウンロードし、そしてモデルを走らせることによって(例えば、機械学習エンジンと対話してエンジンによるモデルの実装をもたらすことによって)1つまたは複数の推論/予測を得ることができる。加えて、プラットフォームは、同内容が以降の予測要求に対して使用できるようにそれをキャッシュできる。
【００２２】
このように、オンデバイス機械学習済みモデルは、アプリケーションによってクライアント/サービス関係を介してオンデバイス機械学習プラットフォームと通信することによってアクセスできる。特に、一部の実装例では、機械学習プラットフォームは、アプリケーションによって参照できるスタンドアロンマルチテナントサービスであることができる。そのため、所与のアプリケーションは、機械学習済みモデルを記憶、管理、訓練および/または実装することは要求されず、代わりに単にオンデバイス機械学習プラットフォームと通信して、モデルに推論を要求して受け取れる。
【００２３】
本開示の別の態様によれば、コンピューティングデバイスは、1つまたは複数のアプリケーションから受け取られる訓練事例を記憶する集中事例データベースをさらに含むことができる。特に、オンデバイス機械学習プラットフォームは、API(「収集API」と称されてよい)を介してアプリケーションから訓練事例を受け取ることができ、そして集中事例データベースにおける事例の記憶を管理できる。例えば、プラットフォームのクライアントまたはテナントである各アプリケーションは、集中事例データベース内に記憶されるそれ自身の事例の集合を有することができ、そして同集合はオンライン方式で補足および/または管理できる。
【００２４】
一部の実装例では、オンデバイス機械学習プラットフォームは、訓練事例を提供するアプリケーションと関連する1つまたは複数のオプションパラメータに従ってアプリケーションから受け取られる各訓練事例の記憶(例えば、その対応する集合内の)をもたらすことができる。1つの例として、オプションパラメータは、訓練事例が記憶される(例えば、更にその後に削除される)期間を定義する生存時間パラメータを含むことができる。一部の実装例では、オプションパラメータは、収集APIを介してプラットフォームに提供される命令を通じて予め定義および/または調整できる。
【００２５】
本開示の別の態様によれば、一部の実装例では、オンデバイス機械学習プラットフォームは、訓練事例へコンピューティングデバイスと関連するコンテキストを記述したコンテキスト特徴を確実に注入できる。例えば、アプリケーションから訓練事例を受け取った上で、オンデバイスプラットフォームのコンテキストプロバイダコンポーネントが1つまたは複数のコンテキスト特徴を決定でき、そして集中事例データベースに訓練事例と共にそのようなコンテキスト特徴を記憶できる。例えば、コンテキスト特徴および新たな訓練事例に提供されるデータは単一のデータベースエントリとして記憶できる。特定のアプリケーションから受け取られる訓練事例と共に決定されて次いで注入もしくはその他関連付けおよび/または記憶される特定のコンテキスト特徴は、そのような特定のアプリケーションに対するオプションパラメータによって特定できる。上記したように、これらのオプション特徴は収集APIを介して調整または予め定義できる。このように、アプリケーションは、どのコンテキスト特徴またはコンテキスト型がその訓練事例へ注入されるかを制御できる(例えば、オプションパラメータを定義することを介して)。
【００２６】
一部の実装例では、コンテキスト特徴はサービス側で注入され、そのためコンテキスト特徴は、アプリケーションに直接利用可能になる必要は決してない。特に、一部の実装例では、集中事例データベースは1つまたは複数のアプリケーションによって直接アクセス可能でなく、そのため特定の訓練事例と共に記憶されるコンテキスト情報は、同訓練事例を提供したアプリケーションにさえアクセス可能でない。
【００２７】
一部の実装例では、コンテキスト特徴は、幾つかの異なるコンテキスト型に従ってグループ化またはその他分類できる。一般に、各コンテキスト型は、周知の名前および周知の型を持つ一組のコンテキスト特徴を特定するまたは含むことができる。1つのコンテキスト型例は、以下のコンテキスト特徴例を含むデバイス情報である:音声状態、ネットワーク状態、電力接続等。
【００２８】
一部の実装例では、コンテキストプロバイダは、注入時/点でデバイスに(例えば、デバイスのコンテキストマネージャに)所与のコンテキスト特徴に対して注入される値を要求する。代替的または追加的に、コンテキストプロバイダは、1つまたは複数のコンテキスト更新のリスナとして登録でき、そして1つまたは複数のコンテキスト更新に基づいてコンテキスト特徴に対する現在値のコンテキスト特徴キャッシュを維持できる。次いで、コンテキスト特徴が注入されるとき、コンテキストプロバイダは単に、コンテキスト特徴キャッシュにアクセスし、そして特定のコンテキスト特徴に対するキャッシュに維持される現在値を注入できる。
【００２９】
記憶時の訓練事例へのコンテキスト特徴の注入に加えてまたは代替的に、コンテキストプロバイダは、推論時のコンテキスト特徴の注入も行える。特に、訓練事例収集のための上記したプロセスに類似して、特定のアプリケーションまたは他のクライアントが或るクライアント提供の入力データを基礎として推論が生成されることを要求すると(例えば、予測APIを介して)、コンテキストプロバイダは、入力データと一緒に対応する機械学習済みモデルへの入力のための補足的コンテキスト特徴を注入または提供できる。このように、クライアント提供の入力データに加えてコンテキスト情報に少なくとも部分的に基づいて推論を行うことができ、これは推論の精度を改善するのを促進できる。
【００３０】
重要なことには、本明細書に記載される訓練事例およびコンテキスト特徴は単に、訓練事例と共に記憶され得るまたはオンデバイスプラットフォームによって推論を提供するために使用され得るデータ例を例示する目的で与えられる。しかしながら、そのようなデータは、どんなデータが収集されてそのようなデータがどのように使用されるかが通知された後にユーザが同意を与えない限り、収集、使用または分析されない。更に、ユーザには、許可の範囲を破棄または修正するツールを与えることができる。加えて、或る情報またはデータは、それが記憶または使用される前に1つまたは複数の仕方で処理でき、その結果、個人識別可能情報は除去されるまたは暗号化されて記憶される。
【００３１】
別の態様によれば、或るアプリケーションまたは他のクライアントがコンテキスト特徴またはコンテキスト型の幾つかのみにアクセスする許可を有してよいので(例えば、デバイスユーザによって定義または制御されるように)、コンテキストプロバイダはクライアント許可制御を行える。特に、一部の実装例では、オンデバイス機械学習プラットフォームまたは他のデバイスコンポーネントは、どのクライアントがどのコンテキスト型にアクセスする許可を有するかのマッピングを維持できる。コンテキスト特徴が注入されることになるとき(例えば、記憶のための訓練事例へか、推論時にクライアント提供の入力データを補足するためか)、コンテキストプロバイダは、注入されることになるコンテキスト特徴またはコンテキスト型に対する対応するアプリケーションまたは他のクライアントの許可状況を確認できる。例えば、特定のアプリケーションおよびコンテキスト型に対する許可状況は、そのようなアプリケーションがそのようなコンテキスト型にアクセスする許可を有するかどうかを説明できる。コンテキストプロバイダは、アプリケーションがアクセスする許可を有するコンテキスト型に含まれるコンテキスト特徴のみを注入することになり、それによってアプリケーションが、それがアクセスする許可を有しないコンテキスト特徴/型にアクセスするのを(間接的な方式でさえ)防止する。
【００３２】
上記した生存時間オプションパラメータに類似して、一部の実装例では、各コンテキスト特徴は、それと関連するまたはそれに割り当てられる満了期間を有することができる。この満了期間情報は、コンテキスト特徴を含む各訓練事例と関連付けできる。一部の実装例では、特定の訓練事例に提供される特定のコンテキスト特徴に対する満了期間の終結において、そのようなコンテキスト特徴に対する値はそのような訓練事例から削除またはその他除去できる。代替的に、訓練事例全体が削除またはその他除去できる。
【００３３】
更には、一部の実装例では、特定のコンテキスト特徴またはコンテキスト型に対する特定のアプリケーションまたは他のクライアントに対する許可状況の変化に応じて、オンデバイスプラットフォームは、特定のアプリケーションと関連する訓練事例と関連付けられるそのようなコンテキスト特徴または型に対するいかなる値またはエントリも集中事例データベースから削除できる。加えて、一部の実装例では、対応するモデルは、コンテキスト特徴値の削除後に残りのデータで再訓練できる。
【００３４】
本開示の更に別の態様によれば、アプリケーションは、API(「訓練API」と称されてよい)を介してオンデバイス機械学習プラットフォームと通信して、集中事例データベースに記憶される訓練事例に基づいて機械学習済みモデルの再訓練または更新をもたらすことができる。一例として、一部の実装例では、訓練プラン(例えば、モデルを訓練するための命令)に対するURIが与えられると、オンデバイス機械学習プラットフォームは、以前に収集した事例に基づいてモデルの訓練を行える(例えば、機械学習エンジンと対話してエンジンによるモデルの訓練をもたらすことによって)。例えば、訓練は、予定時におよび/またはデバイスがアイドルであるときにバックグラウンドで行える。
【００３５】
モデルの再訓練後に、再訓練済みモデルは、本明細書に他の場所で記載されるように推論を提供するために使用できる。典型的に、モデルがユーザに固有であるデータで再訓練されたので、これらの推論はより高い精度を有することになる。このように、オンデバイス機械学習プラットフォームは、アプリケーションまたは他のクライアントへのサービスとして集中事例データ収集および機械学習済みモデルの対応する個別化を可能にすることができる。
【００３６】
別の態様によれば、一部の実装例では、機械学習プラットフォームは、機械学習メトリックの詳細な分析のためにクラウドに機械学習済みモデルに関するログまたは他の更新をアップロードできる。一例として、一部の実装例では、オンデバイスプラットフォームは、再訓練した機械学習済みモデルのパラメータまたはモデルの再訓練中に発生した機械学習済みモデルのパラメータの変更を記述する更新を決定できる。プラットフォームは、他のコンピューティングデバイスによって提供される他の更新との集約のために中央サーバコンピューティングデバイス(例えば、「クラウド」)に更新を送信できる。このように、プラットフォームは、「連合学習」として知られるプロセスへの参加を可能にすることができ、そこではデバイスが、ローカルに記憶されるデータに基づいてモデルのローカルな更新を決定し、次いで集約のためにクラウドサービスにローカルな更新を伝達して(例えば、プライバシーを保護し通信効率的な方式で)モデルのグローバルな更新を生成する。
【００３７】
別の態様によれば、一部の実装例では、アプリケーションを互いから保護するために、各アプリケーションは、オンデバイスプラットフォームによって与えられる或る機能性のための(例えば、機能性ごとの)それ自身の孤立領域を有することができる。例えば、プラットフォームは、プラットフォームにアクセスするためのインタフェースがファクトリを介してアプリケーションに返される前に、アプリケーションを認証できる。返されたインタフェースは、その場合プラットフォームにおけるアプリケーションの孤立領域の唯一のビューを表せる。このプロセスの1つの実装例では、アプリケーションがプラットフォームのAPIに接続するとき、アプリケーションは、アプリケーションの識別情報を検証する署名済みパッケージトークンを提供できる。アプリケーションは、この認証に合格することなくAPIインタフェースを得ることはできない。
【００３８】
本開示の別の態様によれば、一部の実装例では、オンデバイス機械学習プラットフォームは、基底となる機械学習エンジンから完全に抽象化できる。例えば、機械学習エンジンは、TensorFlowエンジン、ニューラルネットワークライブラリ、または推論および/もしくは訓練のための機械学習済みモデルの実装を可能にする他のエンジンであることができる。そのような抽象化のため、機械学習プラットフォームはモデルアーチファクトを、クラウドにおいて発生され、次いでデバイスに送られる(例えば、動的モデルダウンロードを介して)ブロブとみなすことができ、ここで、それらは次いでマッチングエンジンによって解釈される。そのような方式では、機械学習プラットフォームおよびそのサポートされるアプリケーションは、機械学習エンジンの変更に対して弾力的であり、かつ/または利用される特定のエンジンもしくはエンジン型に非依存/柔軟であることができる。
【００３９】
別の態様によれば、オンデバイスプラットフォームに補完的であるツールキットが、デバイスにモデルがアーチファクトとして送られる前にクラウドにおいてそれらを作成およびシミュレートする一組のツール(例えば、Pythonツール)を提供できる。一部の実装例では、ツールキットは、異なるバージョンの機械学習エンジン、または異なるエンジン型(例えば、モバイル向けTensorFlow Lite対ニューラルネットワークライブラリ等)に対してさえ同じソースアーチファクト(例えば、Pythonソースアーチファクト)から生成できる。
【００４０】
一部の実装例では、オンデバイス機械学習プラットフォームは、例えば、モバイルアプリケーションなどのアプリケーションに含めることが、またはそれとして実装することができる。例えば、Androidオペレーティングシステムのコンテキストでは、オンデバイス機械学習プラットフォームは、ダウンロードおよび/または更新できるAndroidパッケージキット(APK)に含めることができる。1つの特定の例では、オンデバイス機械学習プラットフォームは、他のアプリケーションまたはデバイス自体に幾つかの異なるサポートサービスを提供するより大きなアプリケーションの一部分に含めることが、またはそれとして実装することができる。例えば、オンデバイス機械学習プラットフォームに加えて、より大きなアプリケーションは、コンピューティングデバイスがデジタル配信サービス(例えば、「アプリストア」からアプリケーションおよび/もしくは更新をダウンロードする)ならびに/または他のサービスと対話することを可能にするサービスを提供できる。別の例では、オンデバイス機械学習プラットフォームは、スタンドアロンアプリケーションとしてよりもむしろ、デバイスのオペレーティングシステムの一部分に含めることが、またはそれとして実装することができる。
【００４１】
本開示のシステムおよび方法は幾つかの技術的効果および利益を提供する。1つの技術的効果および利益例として、オンデバイス機械学習プラットフォームは、ローカルに記憶されるデバイス固有の訓練事例に基づいて機械学習済みモデルの個別化を可能にすることができ、それによって、より高精度の推論に至る。類似して、本明細書に他の場所で記載されるように、オンデバイスプラットフォームは、「連合学習」へのデバイスの参加を可能にすることができ、そこではローカルな更新が集約されてグローバルな更新を生成し、それによって全ての個人に対して改善されたグローバルなモデル精度に至る。
【００４２】
別の技術的効果および利益例として、オンデバイス機械学習プラットフォームは、訓練事例および/または推論入力へのコンテキスト信号の確実な包含を可能にすることができる。すなわち、プライバシーを維持し、かつユーザ定義の許可を遵守する方式で訓練事例または推論入力にコンテキスト特徴を付加できる。コンテキスト情報の包含を通して、機械学習済みモデルによって提供される推論の精度が改善できる。
【００４３】
別の技術的効果および利益例として、オンデバイス機械学習プラットフォームは、アプリケーションが機械学習済みモデルを管理(例えば、訓練および/もしくは実行)するまたは機械学習エンジンと対話する必要がないように集中サービスを提供できる。そのため、所与のアプリケーションは、機械学習済みモデルを記憶、管理、訓練および/または実装することは要求されず、代わりに単にオンデバイス機械学習プラットフォームと通信して、モデルに推論を要求して受け取れる。これは、アプリケーションのデータサイズが小さくなることを可能にすることができる。アプリケーション開発者が各異なる機械学習エンジンの複雑さを知ることを要求されず、代わりに単にプラットフォームAPIの使用に依存できるので、アプリケーションまたは他のクライアントの開発および展開も単純化できる。
【００４４】
先の効果および利益と類似して、オンデバイス機械学習プラットフォームは、全てのアプリケーションよりもむしろ単一の集中サービスの簡単な更新も可能にすることができる。例えば、新たなバージョンまたは型の機械学習エンジンが起動されるとき、アプリケーションまたは他のクライアントがエンジンと対話せず、代わりにそれらのためにプラットフォームにそうしてもらうので、オンデバイスプラットフォームのみが典型的に、更新して新たなエンジンと対話することを要求される。これにより、アプリケーションはエンジン技術が進化するにつれて最新であり続けるために代わりにオンデバイスプラットフォームに依存できるので、それらが最新バージョンの機械学習エンジンと適合していることを、それらが常に保証する必要性を排除できる。
【００４５】
更に別の技術的効果および利益例として、オンデバイス機械学習プラットフォームは、通信ネットワーク効率および使用を改善できる。すなわち、機械学習がオンデバイスよりもむしろサーバによって行われる過去のパラダイム下では、様々な種類の情報(例えば、入力データ、訓練事例、推論、モデルパラメータ等)が通信ネットワーク(例えば、インターネット)を通じてサーバによってデバイスに送信されることを要求された。しかしながら、本開示がオンデバイス予測、訓練、事例収集および/または他の機械学習タスクもしくは機能性を可能にするので、そのような情報は通信ネットワークを通じて送信されること(少なくともインスタンスごとに)が要求されない。したがって、通信ネットワークトラフィック、効率および使用が改善される。加えて、入力データ、訓練事例等がサーバに/から送信されないので、データのセキュリティを増すことができる。
【００４６】
ここで図を参照しつつ、本開示の実施形態例が更に詳細に述べられることになる。
【００４７】
デバイスおよびシステム例
図1は、本開示の実施形態例に係るオンデバイス機械学習プラットフォーム122を含むコンピューティングデバイス例102のブロック図を示す。
【００４８】
コンピューティングデバイス102は、例えば、デスクトップ、ラップトップ、タブレットコンピューティングデバイス、スマートフォン、着用できるコンピューティングデバイス、ゲーム機、組込みコンピューティングデバイス、または他の形態のコンピューティングデバイスを含め、任意の種類のコンピューティングデバイスであることができる。このように、一部の実装例では、コンピューティングデバイス102は、モバイルコンピューティングデバイスおよび/またはユーザコンピューティングデバイスであることができる。
【００４９】
コンピューティングデバイス102は、1つまたは複数のプロセッサ112およびメモリ114を含む。1つまたは複数のプロセッサ112は、任意の適切な処理デバイス(例えば、プロセッサコア、マイクロプロセッサ、ASIC、FPGA、コントローラ、マイクロコントローラ等)であることができ、かつ1つのプロセッサまたは作動的に接続される複数のプロセッサであることができる。メモリ114は、RAM、ROM、EEPROM、EPROM、フラッシュメモリデバイス、磁気ディスク等、およびその組合せなどの、1つまたは複数の非一時的コンピュータ可読記憶媒体を含むことができる。メモリ114は、データ、およびプロセッサ112によって実行されてコンピューティングデバイス102に動作を行わせる命令を記憶できる。コンピューティングデバイス102は、1つまたは複数のネットワーク(例えば、インターネット)を通じて通信を可能にするネットワークインタフェース116も含むことができる。
【００５０】
オンデバイス機械学習プラットフォーム122は、「機械学習機能」と集合的に称されてよい、オンデバイス予測、訓練、事例収集および/または他の機械学習タスクもしくは機能性を可能にすることができる。
【００５１】
オンデバイス機械学習プラットフォーム122は、コンピューティングデバイス102(例えば、スマートフォンまたはタブレット)にローカルに記憶される1つまたは複数のコンピュータプログラムの形態でよく、それらは、デバイス102によって実行されると、1つまたは複数のローカルに記憶されるアプリケーション120a〜cまたは他のローカルクライアントのためのオンデバイス機械学習機能の遂行を可能にする機械学習管理動作を行うように構成される。オンデバイス機械学習機能の少なくとも一部は、コンピューティングデバイス102にローカルに実装される1つまたは複数の機械学習エンジン128を使用して行われてよい。1つまたは複数のローカルに記憶されるアプリケーション120a〜cまたはルーチン(「クライアント」と称されてよい)のためのオンデバイス機械学習機能の遂行は、それらのクライアントへの集中サービスとして提供されてよく、それらは1つまたは複数のアプリケーションプログラミングインタフェース(API)を介してオンデバイス機械学習プラットフォーム122と対話してよい。
【００５２】
加えて、一部の実装例では、オンデバイス機械学習プラットフォーム122は、予測/推論を生成するために使用される収集した訓練事例および/またはクライアント提供の入力データへコンテキスト特徴を確実に注入するコンテキストプロバイダを含むことができる。このように、オンデバイス機械学習プラットフォーム122は、アプリケーション120a〜cまたは他のクライアントへのサービスとして集中訓練事例収集、モデル訓練および機械学習済みモデル132a〜cの使用を可能にすることができる。
【００５３】
より詳細には、コンピューティングデバイス102は、1つまたは複数のアプリケーション120a〜c(例えば、モバイルアプリケーション)を記憶するまたはその他含むことができる。コンピューティングデバイス102は、オンデバイス機械学習プラットフォーム122および1つまたは複数の機械学習済みモデル132a〜cも含むおよび実装することができる。例えば、機械学習済みモデル132a〜cは、プラットフォーム122によって管理される集中モデルリポジトリ130にデバイス102によって記憶できる。
【００５４】
本開示の1つの態様によれば、アプリケーション120a〜cは、API(「予測API」と称されてよい)を介してオンデバイス機械学習プラットフォーム122と通信して、入力データを提供し、そして機械学習済みモデル132a〜cの1つまたは複数から入力データに基づいて予測を得ることができる。一例として、一部の実装例では、予測プラン(例えば、モデルを走らせて推論/予測を得るための命令)およびモデルパラメータに対する統一資源識別子(URI)が与えられると、オンデバイス機械学習プラットフォーム122は、URI内容(例えば、予測プランおよびパラメータ)をダウンロードし、そしてモデルを走らせることによって(例えば、機械学習エンジン128と対話してエンジンによるモデルの実装をもたらすことによって)1つまたは複数の推論/予測を得ることができる。加えて、プラットフォーム122は、同内容が以降の予測要求に対して使用できるようにそれをキャッシュできる(例えば、リポジトリ130内に)。
【００５５】
このように、オンデバイス機械学習済みモデル132a〜cは、アプリケーション120a〜cによってクライアント/サービス関係を介してオンデバイス機械学習プラットフォーム122と通信することによってアクセスできる。例えば、それぞれの機械学習済みモデル132a〜cは、各アプリケーション120a〜cに対して設けられ、そしてプラットフォーム122によって管理できる。他の実装例では、2つ以上のアプリケーション120a〜cが単一の機械学習済みモデル132a〜cを共有できる、または単一のアプリケーション120a〜cが2つ以上のモデル132a〜cを有することができる。
【００５６】
一部の実装例では、機械学習プラットフォーム122は、アプリケーション120a〜cによって参照できるスタンドアロンマルチテナントサービスであることができる。そのため、所与のアプリケーション120a〜cは、機械学習済みモデル132a〜cを記憶、管理、訓練および/または実装することは要求されず、代わりに単にオンデバイス機械学習プラットフォーム122と通信して、モデル132a〜cに推論を要求して受け取れる。
【００５７】
本開示の別の態様によれば、コンピューティングデバイス102は、アプリケーション120a〜cから受け取られる訓練事例を記憶する集中事例データベース124をさらに含むことができる。特に、オンデバイス機械学習プラットフォーム122は、API(「収集API」と称されてよい)を介してアプリケーション120a〜cから訓練事例を受け取ることができ、そして集中事例データベース124における事例の記憶を管理できる。例えば、プラットフォーム122のクライアントまたはテナントである各アプリケーション120a〜cは、集中事例データベース124内に記憶されるそれ自身の事例の集合を有することができ、そして同集合はオンライン方式で補足および/または管理できる。
【００５８】
一部の実装例では、オンデバイス機械学習プラットフォーム122は、訓練事例を提供するアプリケーション120a〜cと関連する1つまたは複数のオプションパラメータに従ってアプリケーション120a〜cから受け取られる各訓練事例の記憶(例えば、その対応する集合内の)をもたらすことができる。1つの例として、オプションパラメータは、訓練事例が記憶される(例えば、更にその後に削除される)期間を定義する生存時間パラメータを含むことができる。一部の実装例では、オプションパラメータは、収集APIを介してプラットフォーム122に提供される命令を通じて予め定義および/または調整できる。
【００５９】
本開示の別の態様によれば、一部の実装例では、オンデバイス機械学習プラットフォーム122は、訓練事例へコンピューティングデバイス102と関連するコンテキストを記述したコンテキスト特徴を確実に注入できる。例えば、アプリケーション120a〜cから訓練事例を受け取った上で、オンデバイスプラットフォーム122のコンテキストプロバイダコンポーネントが1つまたは複数のコンテキスト特徴を決定でき、そして集中事例データベース124に訓練事例と共にそのようなコンテキスト特徴を記憶できる。例えば、コンテキスト特徴および新たな訓練事例に提供されるデータは単一のデータベースエントリとして記憶できる。特定のアプリケーション120a〜cから受け取られる訓練事例と共に決定されて次いで注入もしくはその他関連付けおよび/または記憶される特定のコンテキスト特徴は、そのような特定のアプリケーション120a〜cに対するオプションパラメータによって特定できる。上記したように、これらのオプション特徴は収集APIを介して調整または予め定義できる。このように、アプリケーション120a〜cは、どのコンテキスト特徴またはコンテキスト型がその訓練事例へ注入されるかを制御できる(例えば、オプションパラメータを定義することを介して)。
【００６０】
一部の実装例では、コンテキスト特徴はサービス側で注入され、そのためコンテキスト特徴は、アプリケーション120a〜cに直接利用可能になる必要は決してない。特に、一部の実装例では、集中事例データベース124は1つまたは複数のアプリケーション120a〜cによって直接アクセス可能でなく、そのため特定の訓練事例と共に記憶されるコンテキスト情報は、同訓練事例を提供したアプリケーション120a〜cにさえアクセス可能でない。
【００６１】
一部の実装例では、コンテキスト特徴は、幾つかの異なるコンテキスト型に従ってグループ化またはその他分類できる。一般に、各コンテキスト型は、周知の名前および周知の型を持つ一組のコンテキスト特徴を特定するまたは含むことができる。1つのコンテキスト型例は、以下のコンテキスト特徴例を含むデバイス情報である:音声状態、ネットワーク状態、電力接続等。
【００６２】
一部の実装例では、コンテキストプロバイダは、注入時/点でデバイスに(例えば、デバイスのコンテキストマネージャ126に)所与のコンテキスト特徴に対して注入される値を要求する。代替的または追加的に、コンテキストプロバイダは、コンテキストマネージャ126からの1つまたは複数のコンテキスト更新のリスナとして登録でき、そして1つまたは複数のコンテキスト更新に基づいてコンテキスト特徴に対する現在値のコンテキスト特徴キャッシュを維持できる。次いで、コンテキスト特徴が注入されるとき、コンテキストプロバイダは単に、コンテキスト特徴キャッシュにアクセスし、そして特定のコンテキスト特徴に対するキャッシュに維持される現在値を注入できる。
【００６３】
記憶時の訓練事例へのコンテキスト特徴の注入に加えてまたは代替的に、コンテキストプロバイダは、推論時のコンテキスト特徴の注入も行える。特に、訓練事例収集のための上記したプロセスに類似して、特定のアプリケーション120a〜cまたは他のクライアントが或るクライアント提供の入力データを基礎として推論が生成されることを要求すると(例えば、予測APIを介して)、コンテキストプロバイダは、入力データと一緒に対応する機械学習済みモデル132a〜cへの入力のための補足的コンテキスト特徴を注入または提供できる。このように、クライアント提供の入力データに加えてコンテキスト情報に少なくとも部分的に基づいて推論を行うことができ、これは推論の精度を改善するのを促進できる。
【００６４】
別の態様によれば、或るアプリケーション120a〜cまたは他のクライアントがコンテキスト特徴またはコンテキスト型の幾つかのみにアクセスする許可を有してよいので(例えば、デバイスユーザによって定義または制御される通りに)、コンテキストプロバイダはクライアント許可制御を行える。特に、一部の実装例では、オンデバイス機械学習プラットフォーム122または他のデバイスコンポーネントは、どのクライアントがどのコンテキスト型またはコンテキスト特徴にアクセスする許可を有するかのマッピングを維持できる。コンテキスト特徴が注入されることになるとき(例えば、記憶のための訓練事例へか、推論時にクライアント提供の入力データを補足するためか)、コンテキストプロバイダは、注入されることになるコンテキスト特徴またはコンテキスト型に対する対応するアプリケーション120a〜cまたは他のクライアントの許可状況を確認できる。例えば、特定のアプリケーション120a〜cおよびコンテキスト型に対する許可状況は、そのようなアプリケーション120a〜cがそのようなコンテキスト型にアクセスする許可を有するかどうかを説明できる。コンテキストプロバイダは、アプリケーション120a〜cがアクセスする許可を有するコンテキスト型に含まれるコンテキスト特徴のみを注入することになり、それによってアプリケーション120a〜cが、それがアクセスする許可を有しないコンテキスト特徴/型にアクセスするのを(間接的な方式でさえ)防止する。
【００６５】
上記した生存時間オプションパラメータに類似して、一部の実装例では、各コンテキスト特徴は、それと関連するまたはそれに割り当てられる満了期間を有することができる。この満了期間情報は、コンテキスト特徴を含む各訓練事例と関連付けできる。一部の実装例では、特定の訓練事例に提供される特定のコンテキスト特徴に対する満了期間の終結において、そのようなコンテキスト特徴に対する値はそのような訓練事例から削除またはその他除去できる。代替的に、訓練事例全体が削除またはその他除去できる。
【００６６】
更には、一部の実装例では、特定のコンテキスト特徴またはコンテキスト型に対する特定のアプリケーション120a〜cまたは他のクライアントに対する許可状況の変化に応じて、オンデバイスプラットフォーム122は、特定のアプリケーション120a〜cと関連する訓練事例と関連付けられるそのようなコンテキスト特徴または型に対するいかなる値またはエントリも集中事例データベース124から削除できる。加えて、一部の実装例では、対応するモデル132a〜cは、コンテキスト特徴値の削除後に残りのデータで再訓練できる。
【００６７】
本開示の更に別の態様によれば、アプリケーション120a〜cは、API(「訓練API」と称されてよい)を介してオンデバイス機械学習プラットフォーム122と通信して、集中事例データベース124に記憶される訓練事例に基づいて機械学習済みモデル132a〜cの再訓練または更新をもたらすことができる。一例として、一部の実装例では、訓練プラン(例えば、モデルを訓練するための命令)に対するURIが与えられると、オンデバイス機械学習プラットフォーム122は、以前に収集した事例に基づいてモデル132a〜cの訓練を行える(例えば、機械学習エンジン128と対話してエンジン128によるモデル132a〜cの訓練をもたらすことによって)。例えば、訓練は、予定時におよび/またはデバイスがアイドルであるときにバックグラウンドで行える。
【００６８】
モデル132a〜cの再訓練後に、再訓練済みモデル132a〜cは、本明細書に他の場所で記載されるように推論を提供するために使用できる。典型的に、モデル132a〜cがユーザに固有であるデータで再訓練されたので、これらの推論はより高い精度を有することになる。このように、オンデバイス機械学習プラットフォーム122は、アプリケーション120a〜cまたは他のクライアントへのサービスとして集中事例データ収集および機械学習済みモデル132a〜cの対応する個別化を可能にすることができる。
【００６９】
別の態様によれば、一部の実装例では、機械学習プラットフォーム122は、機械学習メトリックの詳細な分析のためにクラウドに機械学習済みモデル132a〜cに関するログまたは他の更新をアップロードできる。一例として、一部の実装例では、オンデバイスプラットフォーム122は、再訓練した機械学習済みモデル132a〜cのパラメータまたはモデル132a〜cの再訓練中に発生した機械学習済みモデル132a〜cのパラメータの変更(例えば「勾配」)を記述する更新を決定できる。プラットフォーム122は、他のコンピューティングデバイスによって提供される他の更新との集約のために中央サーバコンピューティングデバイス(例えば、「クラウド」)に更新を送信できる。このように、プラットフォーム122は、「連合学習」として知られるプロセスへの参加を可能にすることができ、そこではデバイスが、ローカルに記憶されるデータに基づいてモデル132a〜cのローカルな更新を決定し、次いで集約のためにクラウドサービスにローカルな更新を伝達して(例えば、プライバシーを保護し通信効率的な方式で)モデル132a〜cのグローバルな更新を生成する。
【００７０】
別の態様によれば、一部の実装例では、アプリケーション120a〜cを互いから保護するために、各アプリケーション120a〜cは、オンデバイスプラットフォーム122によって与えられる或る機能性のための(例えば、機能性ごとの)それ自身の孤立領域を有することができる。例えば、プラットフォーム122は、プラットフォーム122にアクセスするためのインタフェースがファクトリを介してアプリケーション120a〜cに返される前に、アプリケーション120a〜cを認証できる。返されたインタフェースは、その場合プラットフォーム122におけるアプリケーションの孤立領域の唯一のビューを表せる。このプロセスの1つの実装例では、アプリケーション120a〜cがプラットフォーム122のAPIに接続するとき、アプリケーション120a〜cは、アプリケーション120a〜cの識別情報を検証する署名済みパッケージトークンを提供できる。アプリケーション120a〜cは、この認証に合格することなくAPIインタフェースを得ることはできない。
【００７１】
一部の実装例では、プラットフォーム122内の各アプリケーションの孤立領域はアカウント独立している。このように、コンピューティングデバイス102上の同じユーザプロファイルと関連する複数アカウントが同じ訓練データおよび状態を共有できる。これは、大抵の場合の複数アカウントが同じユーザに対してであり、そしてコンピューティングデバイス上の異なるユーザは代わりに異なるユーザプロファイルを使用するであろうことを反映する。
【００７２】
一部の実装例では、或る機能性(例えば、コンテキストにアクセス)のために、許可が必要とされる。そのため、一部の実装例では、プラットフォーム122における特定のコンテキストを使用したいアプリケーション120a〜cは、たとえそれが決してコンテキストに直接作用しなくても、コンテキストがプラットフォーム122内に存在するので、特定のコンテキストにアクセスする許可を有することが要求される。一部の実装例では、全ての関連した許可はクライアントにおいて検証し、次いでプラットフォーム呼出しに渡すことができ、論理的にプラットフォーム122をこの一組の許可で動作させる。一部の実装例では、プラットフォーム122は、プラットフォーム122が全ての許可へのアクセスを有することにユーザが同意することを要求できる。一部の事例では、コンテキストが、特定のユーザがログインすることも必要としてよい。そのようなユーザは、それらの場合のためにアプリケーションによって特定でき、またはコンテキスト注入のためにオプションの任意選択のフィールドによって特定できる。しかしながら、一部の実装例では、ユーザは、プラットフォーム122によって自動的に検出されなくてよい。一部の実装例では、API自体は、そのような具体的なユーザアカウントとの認証を必要としない。
【００７３】
本開示の別の態様によれば、一部の実装例では、オンデバイス機械学習プラットフォーム122は、基底となる機械学習エンジン128から完全に抽象化できる。例えば、機械学習エンジン128は、TensorFlowエンジン、ニューラルネットワークライブラリ、または推論および/もしくは訓練のための機械学習済みモデル132a〜cの実装を可能にする他のエンジンであることができる。そのような抽象化のため、機械学習プラットフォーム122はモデルアーチファクト132a〜cを、クラウドにおいて発生され、次いでデバイスに送られる(例えば、動的モデルダウンロードを介して)ブロブとみなすことができ、ここで、それらは次いでマッチングエンジン128によって解釈される。そのような方式では、機械学習プラットフォーム122およびそのサポートされるアプリケーション120a〜cは、機械学習エンジン128の変更に対して弾力的であり、かつ/または利用される特定のエンジン128もしくはエンジン型に非依存/柔軟であることができる。
【００７４】
別の態様によれば、オンデバイスプラットフォーム122に補完的であるツールキットが、デバイスにモデルがアーチファクトとして送られる前にクラウドにおいてそれらを作成およびシミュレートする一組のツール(例えば、Pythonツール)を提供できる。一部の実装例では、ツールキットは、異なるバージョンの機械学習エンジン、または異なるエンジン型(例えば、モバイル向けTensorFlow Lite対ニューラルネットワークライブラリ等)に対してさえ同じソースアーチファクト(例えば、Pythonソースアーチファクト)から生成できる。
【００７５】
一部の実装例では、オンデバイス機械学習プラットフォーム122は、例えば、モバイルアプリケーションなどのアプリケーションに含めることが、またはそれとして実装することができる。例えば、Androidオペレーティングシステムのコンテキストでは、オンデバイス機械学習プラットフォーム122は、ダウンロードおよび/または更新できるAndroidパッケージキット(APK)に含めることができる。1つの特定の例では、オンデバイス機械学習プラットフォーム122は、他のアプリケーション120a〜cまたはデバイス102自体に幾つかの異なるサポートサービスを提供するより大きなアプリケーションの一部分に含めることが、またはそれとして実装することができる。例えば、オンデバイス機械学習プラットフォーム122に加えて、より大きなアプリケーションは、コンピューティングデバイス102がデジタル配信サービス(例えば、「アプリストア」からアプリケーションおよび/もしくは更新をダウンロードする)ならびに/または他のサービスと対話することを可能にするサービスを提供できる。別の例では、オンデバイス機械学習プラットフォーム122は、スタンドアロンアプリケーションとしてよりもむしろ、デバイス102のオペレーティングシステムの一部分に含めることが、またはそれとして実装することができる。
【００７６】
図2は、本開示の実施形態例に係る機械学習済みモデル展開例のグラフィック図を示す。特に、アプリケーション開発者202は、ツールキットと対話してモデル204を生成およびテストできる。モデルは、推論プラン206および訓練プラン208へ分割またはその他それらによって少なくとも部分的に表現できる。
【００７７】
「プラン」は、グラフ(例えば、TensorFlowグラフ)およびグラフを実行する仕方に関する命令を含むプロトコルバッファ(別名「protobuf」)を含むことができる。1つの例として、プランは、グラフ(例えば、TensorFlowグラフ)自体も組み込む、グラフに行うことになる一連の動作の宣言的記述であることができる。プランには、訓練データの収集について問い合わせる仕方、それをグラフへ入れる仕方、ならびに/または出力を発生および送出する仕方を記述できる。
【００７８】
図2は、2つの択一的(しかし任意選択で相補的)展開方式を例示する。第1の方式では、推論プラン206も訓練プラン208もクラウドサーバ210に展開される。クラウドサーバ210は推論プラン206および訓練プラン208をデバイス214に提供する。
【００７９】
デバイス214は、推論プラン206を実装して推論を生成できる。デバイス214は、代替的または追加的に訓練プラン208を実装して、ローカルに記憶されるデータに基づいてオンデバイス訓練を行うことができ、これは「個別化」または「個別学習」とも称することができる。
【００８０】
第2の展開方式では、推論プラン206は上記したようにクラウドサーバ210に展開される。クラウドサーバは推論プラン206をデバイス216に提供する。デバイス216は、推論プラン206を実装して推論を生成できる。
【００８１】
しかしながら、クラウドサーバ210への推論プラン206の展開に加えてまたは代替的に、第2の方式では、訓練プラン208は連合サーバ212に展開される。連合サーバ212は訓練プラン208をデバイス216に提供する。デバイス216は、訓練プラン208を実装して、ローカルに記憶されるデータに基づいてオンデバイス訓練を行える。そのようなオンデバイス学習後に、デバイス216は連合サーバ212に更新を提供できる。例えば、更新には、再訓練済みモデルの1つもしくは複数のパラメータまたはモデルの再訓練中に発生したモデルのパラメータの1つもしくは複数の変更を記述できる。
【００８２】
連合サーバ212は、複数デバイスからそのような更新を多く受信でき、そして更新を集約して更新済みグローバルモデルを生成できる。更新済みグローバルモデルは次いでデバイス216に再送できる。
【００８３】
加えて、一部の実装例では、デバイス216は、機械学習メトリックの詳細な分析を得るために開発者202によって(例えば、ツールキットと連動して)使用できる機械学習済みモデルに関するログ218または他の更新を更に提供できる。一部の実装例でログ218に基づいて計算できるメトリック例には、チェックイン要求結果のプロット、グラフもしくは可視化、トラフィック(例えば、ボリューム)、損失および精度モデルメトリック、フェーズ時間、または他のメトリックを含む。
【００８４】
図3は、本開示の実施形態例に係る個別化および連合学習データフロー例のグラフィック図を示す。
【００８５】
より詳細には、図3は、一部の実例では相補的に使用されてよい3つの異なる学習データフローを示す。主に図3の下部に破線で図示される第1のデータフローでは、ユーザデバイス上で訓練データが生成される。訓練データは中央局にアップロードされ、そこでアップロードされたデータに基づいて機械学習済みモデルを訓練または再訓練する。モデルは次いで使用(例えば、オンデバイス推論)のためにユーザデバイスに送られる。
【００８６】
個別化または個別学習と称することができる第2のデータフローでは、ユーザデバイス上で作成される訓練データは、デバイス上でモデルを訓練または再訓練するために使用される。再訓練済みモデルは次いでそのようなデバイスによって使用される。この個別学習は、デバイスごとのモデルが集中データ収集なしで訓練および評価されることを可能にし、それによってデータセキュリティおよびユーザプライバシーを強化する。
【００８７】
連合学習と称することができる第3のデータフローでは、ユーザデバイス上で作成される訓練データは、デバイス上でモデルを訓練または再訓練するために使用される。このように、実際のユーザ固有の訓練データはクラウドにアップロードされず、それによってデータセキュリティおよびユーザプライバシーを強化する。
【００８８】
そのようなオンデバイス学習後に、ユーザデバイスは中央局に更新を提供できる。例えば、更新には、再訓練済みモデルの1つもしくは複数のパラメータまたはモデルの再訓練中に発生したモデルのパラメータの1つもしくは複数の変更を記述できる。
【００８９】
中央局は、複数デバイスからそのような更新を多く受信でき、そして更新を集約して更新済みグローバルモデルを生成できる。更新済みグローバルモデルは次いでユーザデバイスに再送できる。この方式は、クロスデバイスモデルが集中データ収集なしで訓練および評価されることを可能にする。
【００９０】
図4は、本開示の実施形態例に係るオンデバイス機械学習プラットフォーム例のブロック図を示す。図4を参照しつつ例示および記載されるプラットフォームは1つの実装例としてのみ提供される。本明細書に記載されるオンデバイス機械学習プラットフォームの多くの異なる実装例が可能である。オンデバイス機械学習プラットフォーム例はメインプロセス402およびバックグラウンドプロセス404を含むまたは実装することができる。
【００９１】
メインプロセス402は全てのAPI要求を扱える。メインプロセス402は、収集API410を介して訓練事例収集サービスを提供する収集APIサービス420、予測API412を介して推論生成サービスを提供する予測APIサービス422、および訓練API414を介してモデル訓練サービスを提供する訓練APIサービス424を提供できる。
【００９２】
一部の実装例では、収集APIサービス420は自動保持ポリシーで訓練事例を持続できる。一部の実装例では、訓練APIサービス424は、事例集合からデータを引き出す不可視のプロセスとして予定時間および条件で訓練セッションを自動的に実行できる。一部の実装例では、予測APIサービス422は、クライアントが所与のモデルに基づいて推論を行うことを許可できるが、同モデルは訓練器にまたは外部ソースに由来してよい。
【００９３】
一部の実装例では、バックグラウンドプロセス404は訓練および他の定期整備タスクのみをホストできる。それはトランザクション型であり、かつ分解されるように設計することができる。一部の実装例では、バックグラウンドプロセス404はその状態を専らメインプロセス402から得る。
【００９４】
以下に更に述べられることになるように、コンテキストプロバイダ430は、収集APIサービス420に対しても予測APIサービス422に対しても、事例へコンテキスト情報を注入する。記憶コンポーネント440は、事例(例えば、集中事例データベース124に)ならびにブックキーピング状態の記憶を可能にするおよび行うことができる。それはLevelDBに基づくことができる。
【００９５】
複数の予測エンジン432が、予測プラン型に応じて、予測APIサービス422によってアクセスできる。予測および訓練プランならびにモデルパラメータが、アーチファクトマネージャ434によって提供またはその他管理される。アーチファクトマネージャ434は、クラウドサーバ210から、アプリケーションアセットから、および/またはファイルからアーチファクトを検索することをサポートできる。それは、例えば、予測器または別の訓練器によって消費される訓練結果を記憶するための可変アーチファクトもサポートできる。
【００９６】
バックグラウンドプロセス404は、訓練プランに基づいて選ばれる複数の訓練エンジン406をホストできる。連合学習のため、バックグラウンドプロセス404は、連合学習サーバと通信して、プライバシー保護技術(例えば、セキュアな集約)を使用して蓄積のために訓練結果をアップロードできる。
【００９７】
ログマネージャ444は、機械学習メトリックの詳細な分析のためにクラウドサーバ210に機械学習済みモデルに関するログをアップロードできる。
【００９８】
より詳細には、一部の実装例では、収集APIサービス420は、バックグラウンドプロセス404による(例えば、バックグラウンド訓練を行うための)後の検索のために集中事例データベース124における訓練事例の記憶を許可する、管理する、かつ/または行う機能であることができる。例えば、収集APIサービス420は、記憶コンポーネント440と対話して、集中事例データベース124における訓練事例の記憶を管理できる。
【００９９】
収集API410は単純であることができる:一旦クライアントが認証されたならば、それは以下のコード例に例証されるようにオブジェクトへのアクセスを得る(ここでTaskは非同期API呼出しを表す手法であり、Task<Void>は無視されても、またはエラーを観察するためにリッスンされてもよい):
class Learning {
...
static CollectionClient getCollectionClient(CollectionOptions options);
...
}
interface CollectionClient {
Task<Void> add(Example example);
Task<Void> clear();
}
【０１００】
Learning.getCollectionClient(options)は、exampleCollectionへのアクセスおよびその構成を許可できる。「options」パラメータは、少なくとも集合の名前を含むことができる。更なるオプションが提供されなければ、デフォルトまたは以前に構成したオプションが使用できる。オプション例には、内容の生存時間、およびそれがデータベース124に記憶される前に学習イベントへ注入されるべきであるコンテキストを含む。
【０１０１】
CollectionClient.add(example)は、記憶に新たな事例を追加できる。
【０１０２】
CollectionClient.clear()は、集合の内容のリセットを許可できる。
【０１０３】
訓練API414および対応する訓練APIサービス424は、バックグラウンドプロセス404をスケジュールして訓練を行える。バックグラウンドプロセス404は、1つまたは複数の訓練エンジン406を実装またはそれと対話して、事例集合からデータを引き出し、そして訓練プランを実行できる。プランは、グラフ(例えば、TensorFlowグラフ)自体も組み込む、グラフに行うことになる一連の動作の宣言的記述であることができる。プランには、訓練データの収集について問い合わせる仕方、それをグラフへ入れる仕方、ならびに/または出力を発生および送出する仕方を記述できる。
【０１０４】
各訓練プラン型が訓練プランエンジン406と関連付けできる。オンデバイス機械学習プラットフォームは、このように新たなプランの型によって拡張でき、それを、バックグラウンド訓練の一般モデルに適合するいかなる種類の機械学習実行も表すことを可能にする。
【０１０５】
1つの例として、訓練器に対するAPI例が以下に提供される:
class Learning {
...
static TrainerClient getTrainerClient(TrainerOptions options);
...
}
interface TrainerClient {
Task<Void> start(@Schedule int schedule);
Task<Void> stop();
}
【０１０６】
Learning.getTrainerClient(options)は、少なくとも訓練器セッション名を含むオプションをとることができ、そして訓練セッションを作成または再構成できる。セッション名は、アプリケーションによって選ばれる、パッケージ名に類似の、定数であることができ、そしてセッション自体は永久であることができる。オプションは、プラン型、プランが得られるメソッド、およびプラン型に固有の任意のパラメータも特定できる。プランはプラン型に応じて異なる仕方で得られてよく、例えば、連合のためには、プランは連合学習サーバからダウンロードでき、個別化のためには、それはアセットに含まれても、またはクラウドサーバ210からダウンロードされてもよい。
【０１０７】
TrainerClient.start(schedule)は、インタフェース作成時にかつ所与の予定で渡されるオプションに基づいて訓練セッションを開始できる。予定は連続的か一回限りかであることができる。一部の実装例では、いずれの場合にも、訓練は、デバイス条件が許可する場合にのみ予定されることになる。一例として、一部の実装例では、訓練は、デバイスがアイドルでも充電中でもある場合にのみ予定されるまたはその他行われることになる。
【０１０８】
TrainerClient.stop()は、訓練セッションの取消しおよび/または除去を許可できる。
【０１０９】
予測API412は、クライアントが入力を与えて、訓練済みモデルに基づいてそれから予測を導出することを許可できる。訓練器のように、予測器は、一部の実装例ではプラン駆動でき、ここでプランは、グラフにどんな動作を行うか、および入力を得て出力を発生する仕方の宣言的記述である。
【０１１０】
1つの例として、予測APIコード例は次の通りである:
class Learning {
...
static PredictorClient getPredictorClient(PredictorOptions options);
...
}
interface PredictorClient {
Task<PredictionResult> predictRank(Example example, Map<String, Example> candidates);
}
【０１１１】
Learning.getPredictorClient()は、所与のオプションに基づいて予測器を返せる。オプションは、予測のためのプランおよびモデルパラメータを得る仕方を特定できる。それらは、どのコンテキスト特徴が予測エンジンに渡される前の候補事例へ自動的に注入されるべきであるかも特定できる。
【０１１２】
predictRank()は、所与のコンテキスト例および指定の候補から導出されるランキング問題に対する予測を返せる。追加的なアプリケーション固有の予測方法が時間とともに導入できる。
【０１１３】
以下のコードは、図4を参照しつつ記載される3つのAPI例410、412および414の1つの使用例を例示する。
【０１１４】
第1に、構成のためのオプションが定義できる。概して、それらのオプションは、表現型構成コンポーネント442からアプリケーションによって得ることができるが、簡略化の理由で、それらは静的定数として定義できる:
class MyLearningConfig {
static final ExampleCollectionOptions COLLECTION_OPTIONS =
ExampleCollectionOptions.create("myCollection)
.setTimeToLive(TimeUnit.DAYS.toMillis(7))
.addContext(ContextType.USER_LOCATION);
static final TrainerOptions TRAINER_OPTIONS =
TrainerOptions.create("myTrainer")
.setCollectionName(COLLECTION_OPTIONS.getCollectionName())
.setPersonalized(
"mrepo://myApp/training_plan",
"mrepo://myApp/initial_params",
"file:trained_params");
static final PredictorOptions PREDICTOR_OPTIONS =
PredictorOptions.create("myPredictor")
.setRanking(
"mrepo://myApp/prediction_plan",
TRAINER_OPTIONS.getTrainedParamsUri())
.addContext(ContextType.USER_LOCATION);
}
【０１１５】
訓練および予測プランならびにモデルパラメータを記述するアーチファクトを参照するためにURIがどのように使用できるかに留意されたい。プランは、グラフ(例えば、TensorFlowグラフ)およびグラフを実行する仕方の情報を符号化できる。一部の実装例では、プランは、対応するツールボックスに含まれるツール(例えば、Pythonツール)によって作成できる。一部の実装例では、モデルパラメータは、プランと関連する重みの不透明な表現であることができる。URIは「モデルリポジトリ」(mrepo:)を参照でき、それらがデバイスに(例えばクラウドサーバ210から)ダウンロードされるが、ローカルにキャッシュされるファイル(file:)も参照できることを意味する。例えば、アーチファクトマネージャ434がサーバ210からのモデルアーチファクトのダウンロードおよび/または他のモデル管理タスクを管理できる。
【０１１６】
ファイルアーチファクトの場合、依存関係がAPI間で定義できる。例えば、TrainerOptionsは、予測APIサービスによって消費される訓練済みパラメータを持つファイルアーチファクトを生成するために定義できる。オンデバイス機械学習プラットフォームは、必要とされる入力がまだ発生されていなければ、動作を遅延させるまたは適切なエラーコードでそれらを拒否することによって、そのような入出力従属性を内部的に扱える。
【０１１７】
以上の構成を与えて、プラットフォームは、訓練事例が集合へ連続的に入れられる或るAPIコードを含むことができる。1つの例として、以下のコードが追加の訓練事例を含むことができる:
ExampleCollectionClient collection =
Learning.getExampleCollectionClient(COLLECTION_OPTIONS);
...
void onSomeEvent(SomeEvent event) {
collection.add(eventToExample(event));
}
【０１１８】
事例がキャッシュに追加されるたびに、COLLECTION_OPTIONSで特定されたコンテキストを特徴として追加できる。ユーザは追加データの限定サイズまたは寿命に注意する必要はなく、それは提供されるオプションに基づいて扱える。
【０１１９】
訓練を予定するために、アプリケーションは、バックグラウンド訓練が現在のオプションを使用して構成され、そして予定されることを典型的に作成時に保証できる。一部の実装例では、訓練が既に以前に予定されており、構成が変化しなければ、それはこの事例呼出しによって影響を受けることはない:
void onCreated() {
TrainerClient trainer = Learning.getTrainerClient(TRAINER_OPTIONS);
trainer.start(Schedule.CONTINUOUSLY);
}
【０１２０】
最後に、別のコード例が予測APIを使用して訓練結果を活かせる。1つの例として、これは、以下のコード例に与えられるように見え得る:
PredictorClient predictor = Learning.getPredictorClient(PREDICTOR_OPTIONS);
...
SomeEvent predict(SomeEvent event, Map<String, SomeEvent> candidates) {
PredictionResult result = predictor.predictRank(eventToExample(event), candsToExample(candidates));
if (result.notAvailable()) {
//これは、アーチファクトが訓練によりダウンロードされること、または計算されることが未だ行われていない場合に起こる可能性がある。
Log.warn(「予測がまだ利用可能でない、デフォルトを使用」)
return candidates.iterator().next();
}
return candidates.get(result.getKeys()[0]);
}
【０１２１】
既に述べたように、一部の実装例では、オンデバイス機械学習プラットフォームのコンテキストプロバイダ430は学習イベントへコンテキスト特徴を注入できる。これはサービス側で発生でき、そのためコンテキストは、アプリケーションに直接利用可能になる必要は決してない。
【０１２２】
コンテキストを注入できる2つの位置例は:
1.事例が事例集合へ記憶される前。注入されるコンテキストはCollectionOptionsによって特定できる。
2.事例が予測エンジンに渡される前。注入されるコンテキストはPredictorOptionsによって特定できる。
【０１２３】
一般に、各コンテキストカテゴリは、事例(例えば、TensorFlow事例プロト)に追加される周知の名前および周知の型を持つ一組の特徴を特定できる。所与のコンテキスト特徴に対して注入される値は注入点でシステムに要求されてよく、またはそれは、プラットフォームの内部コンテキストプロバイダ430が定期的に更新するキャッシュ値でよい。
【０１２４】
コンテキスト特徴例には、音声状態、日属性、カレンダ、検出アクティビティ、ユーザ固有の場所(例えば、「自宅」対「職場」)、ネットワーク状態、電力接続、画面特徴、ユーザ位置、ユーザ位置予測、WiFiスキャン情報、天気、または他のコンテキスト特徴を含む。
【０１２５】
以上の説明に加えて、ユーザには、本明細書に記載されるシステム、プログラムまたは特徴がユーザ情報(例えば、訓練事例およびコンテキスト特徴)の収集を可能にしてよいか、更にいつ可能かに関しても、ユーザにサーバからコンテンツまたは通信が送られるかに関しても、ユーザが選択をすることを許可する制御手段が与えられてよい。加えて、或るデータは、それが記憶または使用される前に1つまたは複数の仕方で処理されてよく、その結果、個人識別可能情報は除去される。例えば、ユーザに対して個人識別可能情報が確定できないようにユーザの識別情報が処理されてよい、または位置情報が得られる程度(都市、郵便番号もしくは州レベルなど)にユーザの地理的位置が一般化されてよく、その結果ユーザの特定の位置は確定できない。このように、ユーザは、ユーザについてどんな情報が収集されるか、その情報がどのように使用されるか、およびどんな情報がユーザに提供されるかに対する制御手段を有してよい。
【０１２６】
オンデバイスプラットフォームはいかなるコンテキスト自体も必要としないので、コンテキストプロバイダ430がクライアントアプリケーションのためにコンテキストを収集する。例えば、クライアントアプリケーションがその機械学習モデルに対する特徴として「位置」を必要としてよい。そのようなアプリケーションは、「位置」コンテキストが必要とされることをオンデバイスプラットフォームに明示的に通知できる。
【０１２７】
オンデバイスプラットフォームは、クライアントアプリケーションがデバイス位置にアクセスする許可を有するかどうかを最初に確認できる。そうでなければ、プラットフォームはクライアントにコンテキストを与えない。一方、アプリケーションが許可を有すれば、一旦クライアントがプラットフォームに訓練事例を送ると、クライアントに対して位置コンテキストが読み込まれることになる。このように、一部の実装例では、クライアントがオンデバイスプラットフォームに事例を送ることが生じるごとに、プラットフォームはそれらの許可を調べて、それらが請求したコンテキストにアクセスする許可をクライアントが有するかどうかを決定する。
【０１２８】
一部の実装例では、実際のコンテキスト内容はアプリケーションに提供されないことに留意されたい。代わりに、コンテキストは単にクライアントに対して訓練事例と共に読み込まれる。訓練事例はオンデバイスプラットフォームデータベース内に保たれることになるので、クライアントは真のコンテキスト内容にはアクセスできない。
【０１２９】
一部の実装例では、場所エイリアスおよびカレンダの様な、或る型のコンテキストは、アクセスするのにユーザアカウントを必要とする。一部の実装例では、コンテキストプロバイダ430自体は、コンテキストに対してどのアカウントを使用するかを示さない。そのような場合、クライアントアプリケーションがアカウントを特定するべきである。一部の実装例では、クライアントによってアカウントが特定されなければ、アカウントを必要としないコンテキストのみがクライアントに提供されることになる。
【０１３０】
オンデバイスプラットフォームが使用しているコンテキストは、一般にコンテキストマネージャ(例えば、図1に図示される126)によって提供される。コンテキストマネージャは、例えば、プラットフォーム内、プラットフォームを含むアプリケーション内、および/またはデバイスのオペレーティングシステム内を含め、幾つかの場所に設けることができる。一部の実装例では、性能を改善するために、コンテキストプロバイダ430は、コンテキストマネージャのリスナを登録でき、そしてオンデバイスプラットフォームメモリに常に最新のコンテキスト更新を保つ。
【０１３１】
一部の実装例では、オンデバイスプラットフォームは、無効コンテキスト失効を行うまたは含むことができる。一部の実装例では、ユーザがデバイス上のコンテキスト信号を切る場合(例えば、位置またはアクティビティ認識を切る)、コンテキストマネージャは、コンテキストが切られたことをオンデバイスプラットフォームに通知しない。代わりに、コンテキストマネージャは、単にオンデバイスプラットフォームにこれらのコンテキストに対するコンテキスト更新を送るのを止める。このように、将来のイベントに対する無効コンテキストの使用を回避するために、プラットフォームは、無効コンテキストに失効させることができる。特に、コンテキストプロパティに基づいて、各コンテキスト特徴またはコンテキスト種類に対して異なる失効時限を定義できる。一旦コンテキストがその失効時限に達すると、それは削除できる。
【０１３２】
別のコンテキスト特徴例は場所エイリアスコンテキスト特徴を含む。特に、ユーザが自宅にいるか職場にいるかが多くのクライアントアプリケーションにとって重要な特徴である。ユーザの自宅/職場が頻繁に変わらないことを考えれば、一旦コンテキストプロバイダ430が構築されると、プラットフォームは現在の自宅/職場エイリアスを求めることができる。ユーザがそのような情報の使用に同意すれば、ユーザの自宅/職場はキャッシュでき、そしてコンテキストプロバイダ430は、位置コンテキストを使用して、位置コンテキストをキャッシュ位置と比較することによってユーザが自宅にいるか職場にいるかを判定できる。一部の実装例では、場所エイリアス情報は、コンテキストマネージャからまたは場所APIから受け取ることができる。
【０１３３】
コンテキストマネージャは、少なくとも2つの以下の仕方でコンテキストを送出できる。第1の例では、オンデバイスプラットフォームはリスナとして登録できる。この場合、オンデバイスプラットフォームは更新されたコンテキストのキャッシュを維持でき、これは、一部の実装例では、オンデバイスプラットフォームが常時オンのサービスであることも意味する。リスナによって、更新されたデータをキャッシュに保つことができる。
【０１３４】
リスナとして登録することの利益は以下を含む:
1.短い待ち時間。全てのコンテキストがオンデバイスプラットフォーム内にキャッシュされ、そして機械学習に配慮した形式に変換される。
2.オンデバイスプラットフォームへのIPC(プロセス間呼出し)が高速であれば、コンテキストをキャッシュすることでバッテリを節約する。
【０１３５】
第2の例では、オンデバイスプラットフォームはワンショットで現在のコンテキストを得ることができる。この場合、コンテキストマネージャは、ワンショットで全ての現在のコンテキストを得るための別のAPIを提供することができる。このAPIが使用されれば、オンデバイスプラットフォームは典型的にコンテキストのキャッシュを維持せず、代わりに要求に応じて現在のコンテキストを得る。
【０１３６】
このモードでは、コンテキストマネージャは、プラットフォームに対して更新されたコンテキストを保つように求められるので、プラットフォームは典型的に、第1のオプションでは必要とされない、追加のUDC許可を得る。
【０１３７】
ワンショットモードの利益には、オンデバイスプラットフォームへのIPCが低速であれば、それがバッテリを節約できることを含む。
【０１３８】
一部の実装例では、オンデバイスプラットフォームは、上記した全てのコンテキストに対するユーザ許可を得てもよいが、或るクライアントは、オンデバイスプラットフォームが有するのと同じ許可を有しなくてもよい。そこで、プラットフォームはクライアントに対する許可を制御できる。一部の実装例では、これは、パッケージマネージャを使用して、クライアントアプリケーションと関連する許可を抽出することによって行える。プラットフォームは、許可に対するコンテキスト間のマッピングを維持できる。このように、クライアントは典型的に、それがオンデバイスプラットフォームにそれ自体を登録するときにそれがどんなコンテキストを使用したいかを明示的に主張することになる。プラットフォームは、クライアントが要求したコンテキストにアクセスする許可を有するかどうかを確認する。アプリケーションが許可を有するコンテキストのみが、対応するモデルを訓練および推論するために使用されることになる。
【０１３９】
加えて、クライアントの許可がオンザフライで変更されることが可能である。例えば、ユーザは、アプリケーションが有用であろうと自分が感じるときにアプリケーションが自分の位置を使用するのを承認するが、その後に許可を撤回してよい。このケースを扱うために、クライアントから新たなイベントが来るたびに、プラットフォームは、それらの既存の許可を確認し、そして対応するコンテキストを訓練するイベントと関係させることができる。
【０１４０】
推論の間、プラットフォームは、現在のクライアント許可も分析して、予測のためにコンテキスト特徴の使用を許可できる。そのため、一部の実装例では、機械学習済みモデルは、訓練および推論のために不足している特徴を受け入れることができる。
【０１４１】
別の態様によれば、一部の実装例では、オンデバイスプラットフォームAPIを使用するために、クライアントは、それらのアプリケーションにAPIキーを追加できる。例えば、アプリケーションは、クライアントが秘密キーを保持するデジタル証明書で署名できる。アプリケーションは、APIを管理する中央局に登録することによってキーを得ることができる。
【０１４２】
1つの認可手順例は以下を含むことができる:
1.オンデバイスプラットフォームは、クライアントがオンデバイスプラットフォームに登録するときにパッケージ名およびAPIキーペアを得る。オンデバイスプラットフォームは、検証のために中央局にパッケージ名およびAPIキーペアを送る。
2.一旦クライアントが検証されると、オンデバイスプラットフォームは、クライアントがそのデバイスで使用するためのプラットフォームキーを生成することになる。
3.そのデバイスにおける将来のAPI呼出しのために、クライアントは、オンデバイスプラットフォームにプラットフォームキーを提供するべきである。
【０１４３】
オンデバイスプラットフォームは、プラットフォームキーがパッケージ名およびAPIキーと一致するかどうかを確認できる。しかしながら、オンデバイスプラットフォームは典型的に、再び検証するためにそれらを中央局に送ることはしない。
【０１４４】
一部の実例では、デバイスは2人以上のユーザによって共有できる。そのため、APIが使用されるときに、オンデバイスプラットフォームはリストから主アカウントを抽出できる。オンデバイスプラットフォームは、主アカウントに訓練データを結び付け、そして関連モデルを更新できる。アカウントに対するモデルがデバイス上で入手可能でなければ、オンデバイスプラットフォームは、クラウドからクライアントアプリケーションに対するモデルをダウンロードできる、またはベースモデル(例えば、連合学習の平均モデル)を使用できる。
【０１４５】
別の態様によれば、一部の実装例では、ユーザは自分の位置履歴またはアカウント履歴をクリアできる。そのような実例では、オンデバイスプラットフォームは全ての対応するコンテキストを除去できる。加えて、一部の実装例では、プラットフォームは、この場合このユーザに対する残りのコンテキストを使用してモデルを再訓練できる。
【０１４６】
例として、図5Aおよび図5Bは、本開示の実施形態例に係るコンテキスト特徴を注入する機械学習プラットフォーム例122のブロック図を示す。特に、図5Aは、事例が事例集合へ記憶される前にコンテキストプロバイダ430がコンテキスト特徴を注入するのを示し、その一方図5Bは、事例が機械学習済みモデルを実装する予測エンジンに渡される前にコンテキストプロバイダ430がコンテキスト特徴を注入するのを示す。
【０１４７】
図6Aおよび図6Bは、本開示の実施形態例に係るモデル訓練を行うデバイス例のブロック図を示す。特に、図6Aおよび図6Bはバックグラウンド訓練プロセスを例示する。
【０１４８】
図6Aに例示されるように、アプリケーションプロセスが訓練データストアへ訓練データを入れることができる。訓練プロセスはバックグラウンドで予定できる(例えば、アイドル状態および/またはプラグイン状態などの、或るデバイス条件によって許可される場合)。
【０１４９】
訓練プロセスは、モデル状態および訓練プランを取り込み、キャッシュからデータを繰り返し取り込んでモデルを訓練し、次いで最終的に統計およびモデル更新メッセージを公開できる(例えば、クラウドサーバに)。一部の実装例では、訓練フェーズが長い場合があるので(例えば、分単位)、訓練プロセスは、変化するデバイス条件に基づいて中断および再開できる。
【０１５０】
図6Bは、それが連合学習を可能にする連合学習サービスを含むことを除いて、図6Aに類似している。図6Bに例示されるように、訓練プランおよびモデルは連合学習サービスによって配布できる。訓練プロセスはバックグラウンドで訓練を行ってモデル更新を生成できる。モデル更新は連合学習サービスにアップロードできる(例えば、集約に使用するために)。加えて、一部の実装例では、品質保証(例えば、半自動品質保証)が学習済みモデルを抽出し、そしてデバイスへモデルを配布できる。
【０１５１】
図7は、本開示の実施形態例に係る連合学習プロセス例のグラフィック図を示す。
【０１５２】
方法例
図8は、本開示の実施形態例に係る機械学習済みモデルを使用して推論を生成する方法例800のフローチャートを示す。
【０１５３】
802で、コンピューティングシステムは、予測アプリケーションプログラミングインタフェースを介して第1のアプリケーションから入力データを受け取ることができる。
【０１５４】
804で、コンピューティングシステムは、第1のアプリケーションによって要求され、かつ第1のアプリケーションがアクセスする許可を有するコンテキスト特徴で入力データを補足できる。一部の実装例では、804で、コンピューティングシステムは、1つまたは複数のコンテキスト型の各々に対する第1のアプリケーションの許可状況を決定できる。一部の実装例では、入力データは、第1のアプリケーションがアクセスする許可を有するコンテキスト型に含まれるコンテキスト特徴のみで補足される。
【０１５５】
806で、コンピューティングシステムは、第1の機械学習済みモデルを利用して、入力データに少なくとも部分的に基づいてかつ補足的コンテキスト特徴に少なくとも部分的に基づいて少なくとも1つの推論を生成できる。808で、コンピューティングシステムは、予測アプリケーションプログラミングインタフェースを介して第1のアプリケーションに少なくとも1つの推論を提供できる。
【０１５６】
図9は、本開示の実施形態例に係る機械学習を行うための訓練事例を収集する方法例900のフローチャートを示す。
【０１５７】
902で、コンピューティングシステムは、収集アプリケーションプログラミングインタフェースを介して第1のアプリケーションから新たな訓練事例を受け取ることができる。904で、コンピューティングシステムは、第1のアプリケーションによって要求され、かつ第1のアプリケーションがアクセスする許可を有するコンテキスト特徴で新たな訓練事例を補足できる。一部の実装例では、904で、コンピューティングシステムは、1つまたは複数のコンテキスト型の各々に対する第1のアプリケーションの許可状況を決定できる。一部の実装例では、新規な訓練事例は、第1のアプリケーションがアクセスする許可を有するコンテキスト型に含まれるコンテキスト特徴のみで補足される。
【０１５８】
906で、コンピューティングシステムは、集中事例データベースにコンテキスト特徴と共に新たな訓練事例を記憶できる。一部の実装例では、906で新たな訓練事例を記憶することは、収集アプリケーションプログラミングインタフェースを介して第1のアプリケーションに対して以前に定義された1つまたは複数のオプションパラメータに従って集中事例データベースに新たな訓練事例を記憶することを含むことができる。1つの例として、1つまたは複数のオプションパラメータは、訓練事例が記憶される期間を定義する生存時間パラメータを少なくとも含むことができる。
【０１５９】
一部の実装例では、906で新たな訓練事例を記憶することは、1つまたは複数のコンテキスト特徴のうちの少なくとも第1のコンテキスト特徴に満了期間を割り当てることを含むことができる。方法900は、第1のコンテキスト特徴に割り当てられる満了期間の終結において集中事例データベースから第1のコンテキスト特徴または新たな訓練事例全体を削除することをさらに含むことができる。
【０１６０】
一部の実装例では、方法900は、少なくとも1つのコンテキスト型に対する第1のアプリケーションの許可状況の変化の指示を受け取ること、および許可状況の変化に応じて、第1のアプリケーションと関連する訓練事例と関連付けられる少なくとも1つのコンテキスト型のいかなるコンテキスト特徴も集中事例データベースから削除することをさらに含むことができる。加えて、一部の実装例では、方法900は、コンテキスト特徴を削除した後に、集中事例データベースにおいて第1のアプリケーションと関連する訓練事例を使用して第1のアプリケーションと関連する1つまたは複数の機械学習済みモデルを再訓練することをさらに含むことができる。
【０１６１】
図10は、本開示の実施形態例に係る機械学習済みモデルを訓練する方法例1000のフローチャートを示す。
【０１６２】
1002で、コンピューティングシステムは、訓練アプリケーションプログラミングインタフェースを介して第1のアプリケーションから、集中事例データベースによって記憶される1つまたは複数の訓練事例に少なくとも部分的に基づいて第1の機械学習済みモデルを再訓練するようにとの命令を受け取ることができる。
【０１６３】
1004で、コンピューティングシステムは、集中事例データベースによって記憶される1つまたは複数の訓練事例に少なくとも部分的に基づいて第1の機械学習済みモデルを再訓練できる。
【０１６４】
1006で、コンピューティングシステムは、再訓練済みモデルの1つもしくは複数のパラメータまたはモデルの再訓練中に発生した1つもしくは複数のパラメータの1つもしくは複数の変更を記述する更新を決定できる。
【０１６５】
1008で、コンピューティングシステムは、他のコンピューティングデバイスによって提供される他の更新との集約のために中央サーバコンピューティングデバイスに更新を送信できる。
【０１６６】
追加開示
本明細書に述べた技術は、サーバ、データベース、ソフトウェアアプリケーションおよび他のコンピュータベースのシステムならびに、取られる措置およびそのようなシステムに/から送られる情報に言及する。コンピュータベースのシステムの固有の柔軟性がコンポーネント間でのタスクおよび機能性の各種の可能な構成、組合せおよび分割を可能にする。例えば、本明細書に述べたプロセスは単一のデバイスもしくはコンポーネントまたは組み合わさって作用する複数デバイスもしくはコンポーネントを使用して実装できる。データベースおよびアプリケーションは単一のシステムに実装できるまたは複数システムにわたって分散できる。分散されたコンポーネントは順次にまたは並列に動作できる。
【０１６７】
本対象がその様々な具体的な実施形態例に関して詳細に記載されたが、各例は説明として提供されており、本開示の限定ではない。当業者は、上記の理解を達成した上で、そのような実施形態の変更、変形および等価物を直ちに生産できる。したがって、本開示は、当業者にとって直ちに明らかであろう本対象への修正、変形および/または追加の包含を排除しない。例えば、1つの実施形態の一部として例示または記載される特徴が別の実施形態と使用されて、更なる実施形態を生ずることができる。このように、本開示がそのような変更、変形および等価物を包含することが意図される。
【０１６８】
特に、図8〜図10が例示および考察の目的で特定の順に行われるステップをそれぞれ示すが、本開示の方法は特に例示した順または配列に限定されない。方法800、900および1000の様々なステップは、本開示の範囲から逸脱することなく様々な方法で省略、再配列、結合および/または適合できる。
【符号の説明】
【０１６９】
102  コンピューティングデバイス
112  プロセッサ
114  メモリ
116  ネットワークインタフェース
120a  アプリケーション
120b  アプリケーション
120c  アプリケーション
122  オンデバイス機械学習プラットフォーム
124  集中事例データベース
126  コンテキストマネージャ
128  機械学習エンジン
130  集中モデルリポジトリ
132a  機械学習済みモデル
132b  機械学習済みモデル
132c  機械学習済みモデル
202  アプリケーション開発者
204  モデル
206  推論プラン
208  訓練プラン
210  クラウドサーバ
212  連合サーバ
214  デバイス
216  デバイス
218  ログ
402  メインプロセス
404  バックグラウンドプロセス
406  訓練エンジン
410  収集API
412  予測API
414  訓練API
420  収集APIサービス
422  予測APIサービス
424  訓練APIサービス
430  コンテキストプロバイダ
432  予測エンジン
434  アーチファクトマネージャ
440  記憶コンポーネント
442  表現型構成コンポーネント
444  ログマネージャ
【図１】
0006926240.tif 000002
【図２】
0006926240.tif 000003
【図３】
0006926240.tif 000004
【図４】
0006926240.tif 000005
【図５Ａ】
0006926240.tif 000006
【図５Ｂ】
0006926240.tif 000007
【図６Ａ】
0006926240.tif 000008
【図６Ｂ】
0006926240.tif 000009
【図７】
0006926240.tif 000010
【図８】
0006926240.tif 000011
【図９】
0006926240.tif 000012
【図１０】
0006926240.tif 000013