本明細書に提示する記述及び図面は様々な原理を例示している。当業者は、たとえ本明細書に明示的に記載又は図示していないとしても、これらの原理を具現し且つこの開示の範囲内に含まれる様々な構成を考案し得ることが、理解されよう。本明細書で使用するとき、本明細書で使用する「又は」という用語は、別段の断り(例えば、「さもなければ」又は「又はその代わりに」)がない限り、非排他的な又は(即ち、「及び/又は」)を指す。加えて、本明細書に記載される様々な実施形態は、必ずしも相互に排他的でなく、本明細書に記載する原理を組み込む追加的な実施形態をもたらすよう組み合わせられてよい。
図1は、適切なときにユーザ対話(ユーザインタラクション)(user interaction)を実行する機能システム100(functional system)の一例を例示している。様々な機能デバイスが例示されており、それらの各々は物理デバイス又はその部分に実装されるが、様々な実施形態において、機能デバイスは、単一のデバイス上に並置されてよく、複数のデバイスに亘って複製されてよく、或いは複数のデバイスの間に分散されてよい。例えば、各機能デバイスは、専用の物理デバイスに実装されてよく、全ての機能デバイスは、単一の物理デバイス(例えば、タブレット又はスマートフォンのようなユーザモバイルデバイス)又はそれらの間の任意の中間構成に実装されてよい。更なる例として、複数の中断サービスデバイス120を地理的に分散させられた物理サーバに亘って提供して、予測デバイスの出力に基づいて様々なクライアントアプリケーションデバイス110に機会表示(opportunity indications)を冗長的に提供してよい。更に他の例として、文脈状態(コンテキスト状態)(contextual state)(例えば、可用性(availability)及び受容性(receptiveness))の複数の測定値(尺度)
(measures)を使用する実施形態では、別個のトレーニングセット創成デバイス150、予測モデルトレーニングデバイス160、又は予測デバイス170が、各々のそのような尺度のために提供されてよく、そのような機能デバイスは、異なる物理サーバに亘って分散させられてよい。
図示されているように、クライアントアプリケーションデバイス110は、それ自体の動作及び目的に従って、彼らのスマートデバイス又は他のチャネルを介して(例えば、アプリ、SMS、電子メール、電話、ウエアラブル通知などを介して)ユーザに情報又は行動提案を伴う通知を送信することのような、ユーザとの対話に関与するデバイスであってよい。クライアントアプリケーションデバイスは、例えば、ユーザの(例えば、クライアントアプリケーションをアプリとして実行する)スマートデバイス、ユーザに対して遠隔にあるサーバ(例えば、クライアントアプリケーションをウェブ又は他のサービスとして実行する仮想マシン)、又は遅延、柔軟な配信、又はそのタイミングを調整する他の能力が可能なユーザとの対話に関与するクライアントアプリケーションを実行することができる任意のデバイスである。
割込みサービスデバイス120(中断サービスデバイス)(interruption service device)は、予測デバイスによって提供されるユーザの文脈状態の測定値を解釈して、そのような表示をクライアントアプリケーションデバイスに戻すことができる、実質的に如何なる物理デバイス(例えば、ユーザのスマートデバイス、仮想マシンを実行する遠隔サーバなど)であってもよい。例えば、割込みサービスデバイス120は、複数のそのような測定値を解釈して、単一の機会表示(例えば、「開かない」、「受信可能であるが利用可能でない」、「受信可能及び利用可能の両方」など)を提供してよく、或いはそのような測定値を機会表示として単に転送してよい。割込みサービスデバイス120は、そのような機会指示をオンデマンドでクライアントアプリケーションデバイス110に(例えば、クエリサービスとして)提供してよく、或いは文脈状態の関連の変化後に、そのような更新を受信する願望を以前に示したクライアントアプリケーションデバイス110に(例えば、サブスクリプションサービスとして)提供してよい。次に、クライアントアプリケーションデバイス110は、これらの受信される表示を使用して、ユーザ対話を開始することが適切であるときを判断してよい。
クライアントアプリケーションデバイス110及び割込みサービスデバイス120が別個の物理デバイスに実装される場合、クエリ又はサブスクリプション通信は、例えば、1以上(1つ又はそれよりも多く)のネットワークチャネルを介して生じてよい。例えば、2つのデバイスが互いに物理的に近接しているならば(例えば、クライアントアプリケーションデバイス110がウエアラブル腕時計デバイスであり、割込みサービスデバイス120がユーザの携帯電話である場合)、通信は、近距離場通信(NFC)、(ブルートゥース(登録商標)低エネルギを含む)ブルートゥース(登録商標)、Wi−Fiなどのような、短距離無線通信プロトコルに従って生じることがある。2つのデバイスが互いにより遠隔である実施形態において、通信は、Wi−Fi、3G、4G、LTE、又はイーサネット(登録商標)ネットワークのような、1以上の無線又は有線ネットワークをトラバースして(traverse)よい。これらのネットワークは、例えば、モバイルキャリアネットワーク、クラウドコンピューティングデータセンターネットワーク、インターネットなどを含んでよく或いはその部分を構成してよい。2つのデバイスが同じ物理ハードウェア内に実装される場合、本明細書に記載する通信は、ローカルデバイスのオペレーティングシステムによって提供されることがある1以上のプロセス間通信(inter-process communications)を介して生じることがある。そのようなアプローチは、他のプロセスによって読み取られるファイルを記録すること、それぞれのソケットと関連付けられるソケットにデータを転送すること、処理間に1以上のパイプを確立すること、共有メモリにデータを書き込むこと、イベントバスを通じてイベントをプッシュすることなどを含んでよい。2つのデバイスが同じプロセスの部分として実装される幾つかの実施形態において、本明細書に記載する通信は、他の機能デバイスと関連付けられる機能にデータを呼び出すこと又は送ること、処理のために取り置かれたコンフィギュレーションファイル又はメモリのような共通の場所にデータを書き込むことによって達成されることがある。機能デバイス間の通信に対する他の様々なアプローチは、機能デバイスが実装されることがある様々な物理的及び手続的な文脈において明らかであろう。加えて、これらのアプローチのうちのいずれも、実装されるシステム100の特定の実施形態に依存して、本明細書に記載する他の機能デバイス130〜170又は例示されていない他のデバイス間の通信に適用されてよい。
スマートデバイスモニタ130は、例えば、現在のデバイス画面(例えば、アプリ、アプリスイッチャにおける、ロックされた画面、ロック解除されている画面、ホーム画面など)、リンガー設定(例えば、大音量、低音量、高振動、低振動、無音など)、最後のロック解除からの時間、ロック/ロック解除の履歴ログ、バッテリ状態(例えば、充電中/充電中でない、バッテリレベル、放電時間)、メッセージ(例えば、メッセージ/通知のパターン)、メッセージ/通知の数、受信者の数、所与の時間窓内の出入り通信の頻度、通話(例えば、通話中/通話中でない、行った/受け取った通話のパターン、不在着信した/拒否された通話のパターン、行った/受け取った/不在着信した/拒否された通話の数、通話が所与の時間窓内で行われた/受け取られた/不在着信された/拒否されたならば他の当事者の数、使用中の現在のアプリケーション(例えば、名前、カテゴリ[生産性、ゲーム、ユーティリティなど]、現在のアプリケーション内の時間など)、アプリケーション使用のパターン(例えば、所与の時間窓内で使用されるアプリの数及びカテゴリ)、ネットワーク接続(例えば、なし、Wi−Fi、移動体、特定キャリア/周波数など)、現在のWi−Fiネットワーク(例えば、SSID名、信号強度、周波数など)、範囲内の現在のWi−Fiネットワークの署名、(例えば、ブルートゥース(登録商標)、NFCなどを介した)現在の接続デバイスの署名などのような、1以上の種類の未処理の(生の)デバイス(例えば、携帯電話又はタブレット)使用情報を監視(モニタリング)するデバイスである。幾つかの実施形態において、この情報のうちの幾つか又はそれよりも多くは、OS又は他のアプリケーションから(即ち、未加工の形態において)直接的に利用可能でなくてよく、代わりに、利用可能なその未処理の使用情報から(特徴抽出デバイス140(feature extraction device)に関して以下により詳細に記載するように)抽出されてよい。
幾つかの実施形態において、未処理の使用情報は、スマートデバイス自体のオペレーティングシステム(OS)によって全体的に又は部分的に集められてよく、よって、スマートデバイス自体がスマートデバイスモニタ130を構成することがある。幾つかのそのような実施形態において、OSは、そのような未処理の使用情報を、理解されるようにプッシュ又はプルプロトコル(push or pull protocols)に従って動作することがあるアプリケーションプログラマインタフェース(API)を介して特徴抽出デバイス130に直接的に利用可能にしてよい。幾つかの実施形態では、スマートデバイス上で動作する他のプロセス又はアプリは、アプリとのユーザ対話の直接的な観察を通じて或いはそれぞれのAPIを介してOS又は他のアプリから他の未処理の使用情報をポーリングすることによって、未処理の使用情報の一部又は全部を集めてよい。例えば、OS APIは、現在のネットワーク接続の瞬間的なビューを他のプロセッサ又はアプリに提供してよく、次に、他のプロセッサ又はアプリは、ある時間期間に亘って見られるすべてのネットワーク接続状態のログをコンパイルしてよい。未処理の使用情報をコンパイルする様々な他のアプローチが明らかになるであろう。
特徴抽出デバイス140は、未処理の使用情報から付加的な有用な情報を抽出することができる任意のデバイスであってよい。この「抽出された使用情報」は、(例えば、ロギングすること又はOS状態を観察することを通じて今までに利用可能でない)未処理の使用情報に今までに含まれていないが、そこから導み出すことができる、実質的に如何なる情報であってもよい。例えば、ネットワークスイッチングの頻度、特定のテキスト会話で費やされたメジアン時間、又は現在の通話の分類(例えば、重要、カジュアル、歓迎されていない)。そのような特徴は、統計的アルゴリズム又はトレーニングされた(教え込まれた)機械学習モデルを含む任意のアプローチに従って得られることがある。
幾つかの実施形態において、特徴抽出デバイス140は、抽出された特徴を変更するために展開後に拡張可能であってよい。例えば、特徴抽出デバイス140は、1以上のスクリプト、コンパイルされた命令、又は特徴抽出のためのアルゴリズムを定義する他のアイテムを格納してよい。特徴抽出デバイス140は、特徴及びトレーニングセット創成デバイス150又は予測デバイス170の下流の全ての結果として得られるデータを抽出するときに、各々のそのような利用可能なアイテムを実行し或いは解釈してよい。どの特徴が抽出されるかを修正するために、これらのアイテムのセットは修正され、簡潔にされ、或いは補充される。
特徴抽出デバイス140は、未加工及び抽出使用情報(即ち、1以上のトレーニングされたモデル又は少なくともそのサブセットと共に使用するための特徴)を、1以上のモデルをトレーニングするためのトレーニングセット創成デバイス150に、並びにユーザの現在の文脈状態の測定値を生成するためのトレーニングされたモデルの適用のための予測デバイス170に提供する。特徴抽出デバイス140は、情報を(例えば、一貫したストリームで又は利用可能なように)継続的に送信してよく、或いはより間隔の空いた時間でのバッチ送信のためにデータを収集してよい。複数の時間スロットからの使用情報がバッチ送信されるべき場合、特徴抽出デバイス140は、送信のためにこれらの特徴を集計して(aggregate)圧縮して(compress)よい。送信の方法は、トレーニングセット創成デバイス150及び予測デバイス170の両方に同じである必要はない。例えば、特徴抽出デバイス140は、集計されて圧縮された使用情報のセットをトレーニングセット創成デバイス150に毎時送信してよいが、使用情報が利用可能になるときに使用情報を即座に予測デバイスに送信してよい。これは、トレーニングセット創成デバイス150が特徴抽出デバイス140から遠隔に位置するが、予測デバイス170が特徴抽出デバイス140と同じハードウェアに対して局所的であるか或いは特徴抽出デバイス140と同じハードウェアに配置されている場合に、特に有益なことがある。
トレーニングセット創成デバイス150は、受信した使用情報、フィードバック、及び他の有用な文脈情報から、1以上の機械学習モデルをトレーニングするための1以上のトレーニングセットを構築することができる、任意のデバイスであってよい。よって、トレーニングセット創成デバイス150は、例えば、ユーザのスマートデバイス又はVMをホストする遠隔サーバに実装されてよい。トレーニングセット創成デバイス150の動作及び生成された(複数の)トレーニングセットの構成が予測モデルトレーニングデバイス160によって利用される機械学習アプローチ及びモデルに依存することは明らかであろう。例えば、予測モデルトレーニングデバイス160が監督された(又は部分的に監督された)学習アプローチを使用する場合、トレーニングセット創成デバイス150はラベル付きトレーニングセットを生成してよい(例えば、その場合、各特徴セットは、その特徴セットに対応すると考えられる或いは想定されるユーザの可用性(availability)、受容性(receptiveness)などを表すブール値又は数値を示すラベルと対にされる)。そのようなラベルを提供するために、人間のオペレータ(例えば、ユーザ又は他のオペレータ)は、特徴セットを検討して、これらのラベルを手動で提供してよい。代替的に、クライアントアプリケーション110は、そのようなラベルを、ユーザ対話を配信した後に実際に観察されたユーザ挙動に基づくフィードバックとして戻してよい。幾つかの実施形態では、部分的に監督されたアプローチが、ラベルを直接的に提供するよりもむしろ、追従されてよい。例えば、1以上の別個にトレーニングされた機械学習モデル(例えば、文脈状態の各測定値についてのロジスティック回帰モデル)を、(ユーザ対話配信前、中又は後にユーザについて観察される使用情報又は他の情報を構築することがある)フィードバック情報又は特徴セットに適用して、各トレーニング例について(例えば、別個に或いは各潜在的なラベルが適用可能である可能性として)1以上のラベルを決定してよい。特徴セットをラベル付けする幾つかの有用なフィードバックは、ユーザが配信された通知(又は他の開始されたユーザ対話)とどのように対話するか(例えば、無視する、2秒に亘って読んで却下するなど)を記述する情報、又はユーザ対話後に送信されたデータを含んでよい。そのようなモデルの適用を通じて、トレーニングセット創成デバイス150は、開始されたユーザ対話に応答してユーザの挙動が変化したか否か並びにどの程度変化したかを決定することにより、そのユーザ対話の成功を測定することができてよい。
幾つかの実施形態において、トレーニングセット創成デバイス150は、新鮮でパーソナライズされた例が集められるときに、トレーニングセットから古い又はパーソナライズされていないトレーニング例を取り除いて(prune)よい。例えば、クライアントアプリケーションデバイス110が特定のユーザのために割込みサービスデバイス120を最初に使用し始めると、そのユーザのモデル172,174は、全体的に人口から又はそのユーザに人口統計的に又はその他の仕方で類似する人口から引き出されたトレーニング例に基づいて集められてよい。そのユーザに特異なトレーニング例が集められると、古い例は、より完全にカスタマイズされたモデルを提供するために、トレーニングセットから段階的に除去されてよい(或いは新しい例よりも比較的少なく重み付けされてよい)。同様に、パーソナライズされているが古いトレーニング例も、ユーザ挙動又は態度の変化を考慮して、より新しいトレーニング例の利益となるよう段階的に除去されてよい(或いは比較的少なく重み付けされてよい)。次に、結果として得られるラベル付きデータセットは、予測モデルトレーニングデバイス160に提供されてよい。
予測モデルトレーニングデバイス160は、トレーニングセットに基づいて1以上のモデルをトレーニングすることができる任意のデバイスであってよい。例えば、予測モデルトレーニングデバイス160は、モバイルデバイス又は遠隔サーバであってよい。文脈状態の測定値を提供するための様々なトレーニングされたモデル及び機械学習アルゴリズムが使用されてよい。例えば、予測モデルトレーニングデバイス160は、トレーニングセットを分析するための勾配降下のバージョンを使用して、回帰(線形又はロジスティック)又はニューラルネットワークモデルをトレーニングしてよい。従って、結果として得られるモデルは、ユーザの文脈状態のリアルタイム予測のための現在の特徴セットへの適用のために予測デバイス170に送信されることができる学習された重み(例えば、シータ値(theta values))のセットを含んでよい。
予測デバイス170は、1以上のトレーニングモデルを1以上の特徴抽出デバイス140からの入り特徴セット(incoming feature sets)に適用することができる、任意のデバイスであってよい。予測デバイス170は、予測モデルトレーニングデバイス160から受信する1以上のモデル(例えば、受容性モデル172及び可用性モデル174)を格納してよい。特徴抽出デバイス140から特徴セットを受信した後に、予測デバイス170は、(例えば、特徴をトレーニングされた回帰又はニューラルネットワーク関数に特徴を入力することによって)モデル172,174を特徴セットに適用する。次に、モデル172,174の出力(例えば、文脈状態測定値)が、上述の方法で機会通知をクライアントアプリケーションデバイス110に提供する際に使用するために、割込みサービスデバイス120に提供されてよい。
本明細書に記載する様々な実施形態において、幾つかの機能デバイスは、スマートデバイスオペレーティングシステム(例えば、スマートデバイスモニタ130)と協調するものとして記載されているが、他の実施形態において、機能デバイスのうちの1以上は、オペレーティングシステムの部分として実装される場合があることが理解されるであろう。例えば、スマートデバイスモニタ130又は特徴抽出デバイス140は、(例えば、オペレーティングシステムAPIを介して)特徴を外部デバイス/サービスに報告するためのオペレーティングシステムコンポーネントとして作動してよい。追加的な例として、リアルタイム割込みサービスパイプライン130,140,170,120又は機能デバイス110〜170の全部は、オペレーティングシステム自体のコンポーネントとして実装されてよい。
図2は、適切な時にユーザ対話を実行するシステム(又はその一部分)を実装するハードウェアデバイス200の例を示している。ハードウェアデバイス200は、図1の機能デバイスのうちの1以上を実装してよく、よって、ウェアラブルデバイス、携帯電話、タブレット、又はサーバ(例えば、本明細書に記載するソフトウェアプロセスを実装する仮想マシンを実行するサーバ)のような、様々なデバイスのうちの1つを実装してよい。図示のように、デバイス200は、1以上のシステムバス210を介して相互接続される、プロセッサ220、メモリ230、ユーザインタフェース240、ネットワークインタフェース250、及び記憶装置260(ストレージ)を含む。図2は、幾つかの態様において、抽象化を構成すること、並びにデバイス200のコンポーネントの実際の組織化は、例示しているものよりも複雑である場合があることが理解されるであろう。更に、この例はスマートデバイスによって実施されるような様々な特徴及びサーバによって実施されるような他の特徴を記載するが、これは例示的な実施形態であるに過ぎないことが理解されるであろう。上述のように、様々な機能は、多くの異なる構成において1以上のデバイスの間で分散されてよい。そのような代替的な構成を可能にするソフトウェア及び記憶装置260のコンテンツ(内容)への変更は明らかであろう。
プロセッサ220は、メモリ230又は記憶装置260に格納された命令(instructions)を実行することができる或いはその他の方法でデータを処理することができる任意のハードウェア装置であってよい。よって、プロセッサは、マイクロプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、又は他の類似のデバイスを含んでよい。プロセッサがハードウェア中に本明細書において記載する機能のうちの1以上を実装する1以上のASIC(又は他の処理デバイス)を含む実施形態において、他の実施形態におけるそのような機能性に対応するものとして記載されるソフトウェアは省略されることがある。
メモリ230は、例えば、L1、L2、若しくはL3キャッシュ又はシステムメモリのような、様々なメモリを含んでよい。よって、メモリ230は、スタティックランダムアクセス記憶装置(SRAM)、ダイナミックRAM(DRAM)、フラッシュメモリ、読出し専用記憶装置(ROM)、又は他の類似のメモリデバイスを含んでよい。
ユーザインタフェース240は、管理者のようなユーザとの通信を可能にする1以上のデバイスを含んでよい。例えば、ユーザインタフェース240は、ユーザコマンドを受信するディスプレイ、マウス、及びキーボードを含んでよい。幾つかの実施形態において、ユーザインタフェース240は、通信インタフェース250を介して遠隔端末に提示されてよいコマンドラインインタフェース又はグラフィカルユーザインタフェースを含んでよい。
通信インタフェース250は、他のハードウェアデバイスとの通信を可能にする1以上のデバイスを含んでよい。例えば、通信インタフェース250は、イーサネット(登録商標)プロトコルに従って通信するように構成される有線又は無線ネットワークインタフェースカード(NIC)を含んでよい。加えて、ネットワークインタフェース250は、TCP/IPプロトコルに従って通信するためにTCP/IPスタックを実装してよい。追加的に又は代替的に、通信インタフェース250は、NFC、ブルートゥース(登録商標)、Wi−Fi又は他のローカル無線又は有線プロトコルに従った通信のためのハードウェアのような、近くのデバイスと通信するためのハードウェアを含んでよい。通信インタフェース250のための様々な代替的な又は追加的なハードウェア又は構成(configuration)が明らかであろう。
記憶装置260は、読出し専用記憶装置(ROM)、ランダムアクセス記憶装置(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、又は類似の記憶媒体のような、1以上の機械可読記憶媒体を含んでよい。様々な実施形態において、記憶装置260は、プロセッサ220による実効のための命令又はプロセッサ220が作動するデータを格納してよい。
例えば、デバイス200がユーザのスマートデバイス(例えば、携帯電話又はタブレット)を実装する場合、記憶装置260は、ハードウェア200の様々な基本動作を制御するスマートデバイスオペレーティングシステム261を格納してよい。例えば、スマートデバイスオペレーティングシステム261は、クライアントアプリケーションを実行し且つ相互作用すること、様々なネットワーク接続性を管理すること、電話及びメッセージング通信を可能にすることなどのための環境を提供してよい。図示の実施形態において、スマートデバイスオペレーティングシステム261は、(上述の測定学(metrics)のうちの1以上のような)ユーザによるスマートデバイスの使用を記述する様々な情報を提供する使用情報報告命令262を含む。よって、この例示的な実施形態において、OSは、図1のスマートデバイスモニタ130を実施する。特徴抽出命令263は、特徴抽出デバイス140を実施してよく、よって、1以上の特徴264を抽出する命令と、それらの特徴265をトレーニングセット創成デバイス又は予測デバイス170に(例えば、周期的に又はリアルタイムで)報告する命令とを含んでよい。
スマートデバイスは、(クライアントアプリケーションの独立した目的及び動作の故に開始のために望ましいと見做されるような)ユーザ対話をいつ開始するかを決定するための機会指標を利用することに関心のある(図1のクライアントアプリケーションデバイス110を実施することがある)1つ以上のクライアントアプリケーション266をホストして実行してもよい。よって、クライアントアプリケーション266のうちの1以上は、割込みサービスデバイス120に問い合わせること(即ち、プル要求)のための機会クエリ命令(opportunity query instructions)又は割込みサービスデバイスからの更新を要求すること(即ち、プッシュ要求)のための機会加入命令268(opportunity subscription instructions)を含んでよい。例えば、クライアントアプリケーション266は、ユーザが実行を試みることを提案するメッセージをユーザに表示することを欲する場合がある。メッセージを表示する前に、クライアントアプリケーション266は、機会クエリ命令267を介して、割込みサービスデバイス120に問い合わせて、ユーザがそのようなユーザ対話に行動することに現在可用でないことを学習することがある。それに応答して、クライアントアプリケーション266は、メッセージを後の配信のために待ち行列に入れてよく、そして、割込みサービスデバイス120が、ユーザが可用になるときをクライアントアプリケーションデバイス266に通知することを、機会加入命令268を介して要求してよい。その後、そのような更新を受信した後に、クライアントアプリケーション266は、(例えば、スマートデバイスオペレーティングシステム261の通知サービスを介して)メッセージをユーザに出力してよい。クライアントアプリケーション266は、ユーザが可用である(available)/受容性がある(receptive)/その他であることが判明したか否か(又はそのような結論を引き出す際に有用な使用又は他のフィードバック情報)を、トレーニングセット創成デバイス150に報告する、フィードバック命令269を含んでもよい。
デバイス200がサポートサーバを実施する場合、記憶装置260は、サーバオペレーティングシステムを格納してよい。サーバがクラウドコンピューティングアーキテクチャ内に配置される幾つかの実施形態において、サーバオペレーティングシステムは、1以上の仮想マシンを調整するハイパーバイザ(hypervisor)を含んでよく、次いで、ハイパーバイザは、追加的な命令及びデータ272〜279を含んでよい。トレーニングセット創成命令272は、トレーニングセット創成デバイス150を実施してよく、よって、特徴報告デバイスから特徴セットを受信し、そこから新しいトレーニング例を創成して、トレーニングセット274を形成してよい。フィードバック解釈命令273は、(例えば、図示しないトレーニングされたフィードバック解釈モデルを使用して)クライアントアプリケーションデバイス110又は他のソースからのフィードバックを解釈して、予測モデルをトレーニングする際に使用するためにトレーニング例にラベル(標識)を付けてよい。
予測モデルトレーニング命令275は、予測モデルトレーニングデバイス160を実施してよく、よって、トレーニングセット274又はその一部分に基づいて1以上の予測モデル276をトレーニングしてよい。例えば、予測モデルトレーニング命令275は、回帰又は(深部学習を含む)ニューラルネットワーク予測モデル276を例示化する(instantiating)1以上のシータ重み値(theta weight values)を学習する勾配降下(gradient descent)の形態を実装してよい。トレーニングされたモデル277を用いるならば、モデルアプリケーション命令モデル277は、特徴抽出デバイス140から特徴を受信し、次に、(複数の)モデル276を適用することによって、予測デバイス170を実施して、ユーザの文脈状態の1以上の測定値を取得してよい。次に、クエリサービス命令278又は加入サービス命令は、機会表示(例えば、「可用である」、「受容的であるが可用でない」、又は文脈状態測定値自体)を、プル式又はプッシュ式にクライアントアプリデバイス110にそれぞれ提供することによって、割込みサービスデバイス120を実施してよい。
記憶装置260に格納されるものとして記載される様々な情報は、代替的に又は追加的にメモリ230に格納されてよいことは明らかであろう。この点に関して、メモリ230は、「記憶装置」を構成すると考えられてもよく、記憶装置260は、「メモリ」を構成すると考えられてよい。様々な他の構成も明らかであろう。更に、メモリ230及び記憶装置260は、両方とも、「非一時的な機械可読媒体」であると考えられてよい。本明細書において使用するとき、「非一時的」という用語は、一時的な信号を排除するが、揮発性メモリ及び不揮発性メモリの両方を含む全ての形態の記憶装置を含むことが理解されるであろう。
ホストデバイス200は、各々の記載するコンポーネントのうちの1つを含むものとして示されているが、様々なコンポーネントは、様々な実施形態において重複されてよい。例えば、プロセッサ220は、複数のプロセッサが協働して本明細書に記載する機能性を達成するよう、本明細書に記載する方法を独立して実行するように構成される或いは本明細書に記載する方法のステップ又はサブルーチンを実施するように構成される複数のマイクロプロセッサを含んでよい。更に、デバイス200がクラウドコンピューティングシステムにおいて実施される場合、様々なハードウェアコンポーネントは、別個の物理システムに属してよい。例えば、プロセッサ220は、第1のサーバ内の第1のプロセッサと、第2のサーバ内の第2のプロセッサとを含んでよい。
図3は、適切な時にユーザ対話を行うシステム300の第1の実施形態を例示している。システム300は、(携帯電話又はタブレットのような)スマートデバイス320をクラウド仮想マシンサーバ330に相互接続する(キャリアネットワーク、LAN、クラウドネットワーク、インターネット、又はそれらの組み合わせのような)ネットワーク310を含んでよい。システム300は、図1の機能システム100の実装を構成することがある。具体的には、図示のように、スマートデバイス320は、2つのクライアントアプリケーションデバイス110、スマートデバイスモニタ130、及び特徴抽出デバイス140を構成してよいのに対し、クラウドVM330は、トレーニングセット創成デバイス150、予測モデルトレーニングデバイス160、予測デバイス170、及び割込みサービスデバイス120を構成してよい。
図示のように、スマートデバイス320は、(例えば、スマートデバイスOSのAPI内で又はAPIを介して)使用モニタリング(監視)を行う使用モニタリングプロセス322と、(例えば、スマートデバイスOSのAPI内の又はそのAPIを介した)使用モニタリングプロセスによって収集される未処理の使用情報から追加的な特徴を抽出する特徴抽出プロセス324とを含む。スマートデバイス320は、(生であろうと抽出されたものであろうと)関連する使用情報特徴をクラウドVM330に送信し、トレーニングセット構築プロセス332が、クラウドVM330で、それらの特徴をトレーニングセット334内の1以上の新しいトレーニング例として保存する(commits)。これらの記録に初めにラベルが付けられていないとしても、適切なラベルを識別するのに十分なフィードバックがひとたび得られると、トレーニングセット構築プロセス332は、引き続き、それらの例にラベルを付けてよい。次に、モデルトレーニングプロセス336は、トレーニングセット334を(直ちに又は後に)使用して、上述のような1以上の予測モデル338を創成してよく或いは更新してよい。
一方、モデルアプリケーションプロセス342は、予測モデル338の10個の現在バージョンを入力特徴セットに適用して、ユーザの文脈状態のうちの1以上の測定値を決定し、この情報をクエリサービス344及び加入サービス346プロセスに利用可能にする。クライアントアプリケーション1 326は、ユーザ対話を開始したいと思い、クエリサービス344にクエリを送信する。それに応答して、クエリサービス344は、モデルアプリケーションプロセス342によって提供される(複数の)測定値に基づいて、機会表示をクライアントアプリケーション1 326に戻す。次に、クライアントアプリケーション1 326は、この表示を使用して、ユーザ対話を開始することが適切な時であるか否かを決定してよい。ユーザ対話が開始されるならば、クライアントアプリケーション1 326は、トレーニングセット構築プロセス332にフィードバックを報告してよい。
他方、クライアントアプリケーション2 328は、ユーザ可用性に対する更新についてのプッシュ通知を受信する要望を加入サービスプロセス346に以前に示していることがある。例えば、クライアントアプリケーションは、機会表示に対するすべての変更に又は所定の値又は所定の値の群若しくは範囲への機会表示の変更に加入してよい。モデルアプリケーションプロセス342によって報告された(複数の)測定値に基づく機会表示に対する変更後に、加入サービス346は、新しい機会表示をクライアントアプリケーション2 328にプッシュしてよい。クライアントアプリケーション2 328は、この指示を使用して、ユーザ対話を開始することが適切な時であるか否かを決定してよい。ユーザ対話が開始されるならば、クライアントアプリケーション2 328は、トレーニングセット構築プロセス332にフィードバックを報告してよい。
図4は、適切な時にユーザ対話を行うシステム400の第2の実施形態を例示している。システム400は、(携帯電話又はタブレットのような)スマートデバイス420をクラウド仮想マシンサーバ430に相互接続する(キャリアネットワーク、LAN、クラウドネットワーク、インターネット、又はそれらの組み合わせのような)ネットワーク410を含んでよい。システム300は、図1の機能システム100の実装を構成することがある。具体的には、図示のように、スマートデバイス420は、スマートデバイスモニタ130、特徴抽出デバイス140、トレーニングセット創成デバイス150、予測モデルトレーニングデバイス160、予測デバイス170、及び割込みサービスデバイス120を構成することがある。VM1 440は、クライアントアプリケーションデバイス110及び他の割込みサービスデバイス120を構成することがある。VM2 450は、他のクライアントアプリケーションデバイスを構成することがある。
図示のように、この第2の実施形態において、機能デバイスの大部分は、スマートデバイス420自体に組み込まれている。文脈モニタリングプロセス422が、未処理の使用データを収集し、特徴抽出プロセス424は、そこから追加的な特徴を抽出する。トレーニングセット構築プロセス426が、これらの特徴及びフィードバック情報を使用して、トレーニングセット428を創成し、トレーニングセット428から、モデルトレーニングプロセス432が、ユーザの現在の文脈状態(例えば、可用性及び受容性)の1以上の測定値を決定する1以上の予測モデル434を創成する。モデルアプリケーションプロセス436が、(複数の)モデル434を新しい特徴セットに適用して、これらの測定値を決定し、次に、加入サービスプロセス438が、これらの測定値に基づく機会表示を、機会表示に対する変化についてのプッシュ通知を受信するよう以前に加入していたVM1 440に転送する。
VM1 440は、ユーザの文脈状態を定期的に決定するスマートデバイス420と、スマートデバイス上で動作している通知受信アプリ(又はOSモジュール)に通知(又は他のユーザ対話)をプッシュするクライアントアプリケーション452をホストするVM2 450との間の媒介(intermediary)として確立される。例えば、通知プッシュアプリケーション452は、コーチングサービスのサーバ側にあってよいのに対し、通知受信アプリケーション439は、コーチングサービスのクライアント側(例えば、ダッシュボード又はメッセージセンタ)であってよい。媒介VM1 440は、スマートデバイス420からの機会表示更新に加入して、要求に従ってVM2 450にそのような機会表示を提供してよい。よって、VM1 440は、そのようなオンデマンド可用性を提供することをスマートデバイス420に要求せずに、ユーザ対話のための適切な時を決定するクエリサービスをVM2 450に提供する。幾つかの実施形態において、VM1 440は、複数のスマートデバイス420から又は複数のユーザのために更新を受信して、VM2 450又はクライアントアプリケーションをホストする他のサーバのための単一地点のクエリを提供してよい。よって、VM1 440は、スマートデバイス420から機会表示を受信する加入クライアントプロセス442と、報告される機会表示444を格納することに捧げられたメモリと、要求に応じてこれらの機会表示をVM2 450に転送するクエリサービスプロセス446とを含む。上述のように、VM2 450は、それ自体が機会クエリソフトウェアモジュール454を実装する、通知プッシュアプリケーション452を含む。例えば、機会クエリモジュール454は、クエリサービス446のAPIによって要求される適切な手順及びフォーマットに従ったアプリケーション452コードの他の部分の要求で、要求機会表示を取り扱ってよい。
図3〜図4の例は図1の機能システムの2つの可能な例示化に過ぎないこと並びにその例示的なシステム100の範囲内でより多くの構成が可能であることが理解されるであろう。例えば、第3の実施形態が、スマートデバイスモニタ130をウェアラブルデバイス(例えば、加速度計及びパルスセンサを備えるウエアラブル腕時計デバイス)上に配置し、他のスマートデバイスモニタ130、特徴抽出デバイス140、予測デバイス170、割込みサービスデバイス120、及びクライアントアプリケーションデバイス110を携帯電話上に配置し、トレーニングセット創成デバイス150及び予測モデルトレーニングデバイス160を遠隔サーバ上に配置してよい。そのような実施形態では、トレーニングセットラベル付け及び予測モデルトレーニングの比較的リソース集中的な動作のみが、携帯電話から遠隔サーバに「アウトソーシング」される。様々な追加的な実施形態が明らかであろう。更に他の実施形態において、第2の実施形態は、機会クエリモジュール454をスマートデバイス420上に移動するように修正されてよい。そのような実施形態において、通知プッシュアプリケーション452は、通知受信アプリケーション439に通知をプッシュしてよく、次に、通知受信アプリケーション439は、クエリを行って、受信した通知をユーザに提示するか否か又は受信した通知をユーザに提示する時を決定してよい。そのような実施形態の変形において、クエリは、遠隔VM1 440上のクエリサービス446に対して向けられてよく、或いは(例えばスマートデバイス420内でもクエリサービス446を実施することによって)スマートデバイス420でローカルに行われてよい。
図5は、デバイスオペレーティングシステムから使用情報を収集する方法500の一例を例示している。方法500は、未処理の情報が基礎を成すOSによって(又は他の場所から)によって過渡的にのみ提供される未処理の使用情報を収集するためにスマートデバイスモニタ130によって行われる操作に対応してよい。幾つかの実施形態において、方法500(又はそれに類似する方法)は、オペレーティングシステム261の部分として行われようが他のアプリケーションとして(例えば、特徴抽出命令263と共に)行われようが、使用情報報告命令262によって行われてよい。方法500は、6個の異なる種類の未処理の使用情報を収集することを例示している。様々な他の追加的な又は代替的な未処理の使用情報、及びOS、アプリ、又は他のソースから入手可能な情報からそのような未処理の使用情報を収集する方法は明らかであろう。他の実施形態において、これらの(又は他の)種類の未処理の使用情報の一部は、OS、アプリ、又は他のソースによって直接的に提供されてよいことが更に明らかであろう。例えば、幾つかの実施形態において、OSは、通常動作を通じて、APIを介して、受信された並びに送信されたメッセージのログを方法500に提供してよい。他の実施形態では、未処理の使用情報を収集するために、方法500はOS自体によって実装されてよく、他のOSモジュール、アプリ、及び他のソースとインタフェース接続されてよい。これらの代替的な実施形態を可能にする方法500に対する様々な変更は明らかであろう。
方法500は、ステップ505で開始し、ステップ505で、方法は、(例えば、OSによって提供される事象バスを介して)1つ以上のOS事象の表示を受信する。ステップ510において、方法500は、受信した事象が、ユーザが自分の電話をロック解除したことを示すか否かを決定する。受信した事象がどの情報を伝えるかを決定する特定のアプローチは、方法500が相互作用するOSに特異である。この決定510(及び後続の決定)を実施するための特定のステップは、OSの観点から明らかであろう。事象がロック解除事象に関連するならば、方法500は、ステップ515に進み、ステップ515で、デバイスは、最後のデバイスロック解除の時を格納する追跡された変数を更新する。
次に、ステップ520において、デバイスは、OS事象が、メッセージ(例えば、テキスト又はマルチメディアメッセージ)が送信されたか或いは受信されたことを示すか否かを決定する。そうであるならば、デバイスは、メッセージ525(例えば、メッセージ内容、時間、送信者、又は受信者)を記録し、ステップ525の連続的な実行を通じて創成されるメッセージログを参照することによって最後の5分(又は何らかの他の有用な時間窓)内に受信したメッセージの実行カウントを更新する。メッセージログ及びカウントの両方は、特徴としての後の使用のために又はそこから追加的な特徴を抽出するために格納されてよい。ステップ535において、デバイスは、OS事象が、ユーザが異なるアプリケーションに切り替わったことを示すか否かを決定する。そうであるならば、デバイスは、ステップ540における実行ログ内の切替え(例えば、時間、以前のアプリケーション、及び新しいアプリケーション)を記録し、ステップ545における前の5分(又は他の時間窓)内のアプリケーション切替えの数を再カウントし、ステップ545における前の5分(又は他の時間窓)内にユーザによって開始されたアプリケーション切替えの数を再カウントし、ステップ550における前の5分(又は他の時間窓)内にユーザによって起動された特異なアプリケーションの数を再カウントする。切替えログ及びカウントは、特徴としての後の使用のために或いはそこから追加的な特徴を抽出するために格納されてよい。次に、方法500は、ステップ555に進んで、終了する。
方法500は未処理の使用情報を収集する方法の一例に過ぎないこと、並びに様々な代替的なアプローチが続いてよいことは明らかであろう。例えば、幾つかの実施形態では、専用のアルゴリズムがOS事象の各タイプ又はその複数のグループについて定められてよい。例えば、OS事象の各種類についての事象バスと登録した後、デバイスは、その種類のOS事象を処理するための専用のアルゴリズムを登録してよい。よって、事象バスは、実際には、ステップ510、520、535の作業を行う。何故ならば、特定のOS事象を処理するためのアルゴリズムのみが呼び出されるからである。
図6は、予測モデルトレーニング又はアプリケーションにおける使用のための特徴セットを生成する方法600の一例を例示している。方法600は、使用情報を抽出して、未処理の使用情報及び抽出された使用情報の両方を1以上の予測モデルによって使用される特徴セット内に収集するために、特徴抽出デバイスによって行われる、操作に対応してよい。幾つかの実施形態において、方法600は、特徴抽出命令263又は特徴報告命令265に対応してよい。方法600は、例えば、定期的又は方法500の実行の直後のような、様々な時に行われてよい。
方法600は、(例えば、定期的に発生するように構成されたスケジュールタスクとしての実行に基づいて)ステップ605において開始し、ステップ610に進んで、ステップ610で、デバイスは、空の特徴セットデータオブジェクトを創成する。ステップ615において、デバイスは、(例えば、方法500又はそれに類似する方法に従って)OS又は他のソースをモニタリングすることによって追跡された未処理の使用情報についての現在値を空の特徴セットに複製(コピー)する。例えば、最後のロック解除の時、メッセージログ、及びアプリケーションログは、特徴セットに複製されてよい。次に、ステップ620において、デバイスは、OS(又は他のアプリ又は他のソース)から直接的に利用可能な特徴として使用されるあらゆる未処理の使用情報についてOSをポーリングする。例えば、OSは、現在の接続情報(例えば、ネットワーク、データ使用量)又は現在のデバイス状態のような情報を提供することができる。次に、この情報は、ステップ625において特徴セットに複製されてもよい。
ステップ630において、デバイスは、存在する使用情報から特徴を抽出するために適用されるために利用可能ないずれかのアルゴリズムがあるか否かを決定する。例えば、デバイスは、各特徴セットについて順番に実行されるべき一群のスクリプト、JARファイルなどを格納してよい。特徴抽出を方法600自体に単に符号化することのような様々な代替も可能である。適用する特徴抽出アルゴリズムがあるならば、これらの各々はステップ635において行われ(例えば、関数として呼び出される或いはスクリプトとして実行され)、その結果は、ステップ640において特徴セットに複製される。次に、方法はステップ645に進んで終了する。次に、特徴は、将来のある時点で或いは方法600がステップ645で終了する前の最終ステップ(図示せず)としてトレーニングセット創成デバイス150又は予測デバイス170に送信されてよい。幾つかの実施形態において、デバイスは、複数の特徴セット(例えば、5分毎の新しい特徴セット)を収集し、それらを(例えば、1時間又は他の時間期間毎に或いは他のデバイスによる要求に応じて)他のデバイスのうちの1つにバッチとして一緒に送信してよい。送信スケジュールは、トレーニングセット創成デバイス150及び予測デバイス170への送信について同じである必要はない。例えば、特徴抽出デバイス140は、特徴のバッチをトレーニングセット創成デバイスに毎時送信してよいのに対し、新しい特徴セットが最新の機会表示を有効にするために使用可能になるときに、各々の新しい特徴セットを予測デバイスに送信してよい。様々な他の修正が明らかであろう。
図7は、1以上の予測モデルをトレーニングするためのトレーニングセット700のある例を例示している。このトレーニングセット700は、トレーニングセット274に対応してよく、報告された特徴セット及びフィードバックからトレーニングセット創成デバイス150によって創成されてよい。図示のように、セットは、複数のラベルを含み、よって、複数の予測モデル(例えば、受容性モデル及び可用性モデル)をトレーニングするために使用されてよい。1以上のトレーニングセットを格納する様々な代替的な構成が使用されてよいことが理解されるであろう。例えば、幾つかの実施形態では、各モデルがトレーニングされるために、別個のトレーニングセットが構築されてよい。そのようなトレーニングセットは、(例えば、共通の特徴を備えない或いは含められる特徴に幾らかのオーバーラップのみを備える)異なる特徴セット又は異なるラベルを含んでよい。代替的に、幾つかの実施形態において、トレーニングセット700は(例えば、監督されていない学習或いは部分的に監督された学習について)ラベル付けられなくてよく、或いはラベルは特徴とは異なるデータ構造に格納されてよい。加えて、データセットを格納するための基礎となるデータ構造は表でなくてよく、例えば、アレイ、リスト、ツリー、又は他のデータ構造のような様々な他の形態をとってよい。特徴、ラベル、又は他の情報(例えば、一部の実施形態では、時刻のような、タイムスタンプから導き出される特徴又は複数の特徴として使用されてもよい、タイムスタンプ)についての追加的なフィールド(欄)が明らかであろう。
図示のように、トレーニングセット700は、特徴710のセットと、ラベル720のセットとを含む。特徴710のセットは、各トレーニング例について報告された特徴を格納する様々なフィールドを含んでよい。一例として、トレーニングセット700は、そのとき現在のデバイス状態を格納するデバイス状態フィールド712、ユーザが関与する通信(例えば、通話及びテキストメッセージ)についての情報を格納する通信フィールド714、ユーザによって使用されるアプリについての情報を格納するアプリ使用フィールド716と、デバイスのそのとき現在の接続情報を格納する接続フィールド718とを含む。ラベル720は、ユーザがユーザ対話に物理的に関与するために「可用である」とみなされたか否のラベルを格納する可用フィールド722と、ユーザがユーザ対話に心理的に関与するために「受容的である」とみなされた否かのラベルを格納する受容性フィールド724とを含む。ブールラベルが示されており、(ロジスティック回帰モデルをトレーニングするのに有益であることがあるが)、他の実施形態では、数値が(例えば、線形回帰モデルをトレーニングする際の使用のために)これら2つの測定値のラベルとして提供されてよい。これらの数値は、ラベルが当て嵌まる確率又はラベルが当て嵌まる程度に対応することがある(例えば、100の可用性は、ユーザがジョグに行くことができることを示してよいのに対し、20の可用性は、ユーザがジョギングに行くことができず、オフィスの周りを短時間歩くことができることを示してよい)。様々な代替的な測定値が提供されてよいことも明らかであろう。例えば、可用性は、各々のラベルが、ユーザが可用である異なる種類、グループ分け、又は身体活動の程度にそれぞれ対応する、複数のラベルに分解されてよく、それにより、複数の程度の可用性、受容性、又はユーザの文脈状態の他の測定値の各々について異なるモデルのトレーニングを可能にする。予測モデルに関して、本明細書に記載するトレーニングセット創成、モデルトレーニング、及びモデルアプリケーションへのアプローチの実質的にいずれも、ラベル付けモデルの操作を可能にするために利用されてよい。
一例として、トレーニング例730は、(「作業SSID」と呼ばれ、「ウェブブラウザアプリ」を現在使用している、WiFiアクセスポイントへの接続を含む)特定の機能セットについて、ユーザは入って来るユーザ対話に対して受容的であるが、それらに直ちに対応するよう可用でないと判断されたことを示している。トレーニング例740は、(今のところ35分続いている通話の中に現在いるユーザを含む)異なる特徴セットについて、ユーザはユーザ対話を受け入れることについて受容的でなく可用でもないと判断されたことを示すことがある。第3のトレーニング例は、(デバイスが現在ロックされており、過去5分中にアプリが使用されていないことを含む)他の報告された特徴セットがまだラベル付けられていないことを格納する。フィードバック情報の受信後、トレーニングセット創成デバイス150は、この例750に戻って、ラベルを提供してよい。例えば、フィードバックが、ユーザ、他の人間のユーザ、又はクライアントアプリケーションからのマニュアル入力である場合、フィードバックは、例750に添付されるべきラベル自体を含んでよい。フィードバックが、ラベルを未だ含まない後続の使用情報又は他の情報である場合、トレーニングセット創成デバイス150は、フィードバックを解釈して、例750への添付のための(複数の)ラベルを生成してよい。例えば、トレーニングセットは、データ構造内の特徴又は各々のそれぞれのラベルがある例に当て嵌まるか否かを決定する受信されたフィードバックに適用される各々の各潜在的ラベルについて、トレーニングされたモデル(例えば、回帰モデル又はニューラルネットワーク)を含んでよい。予測デバイス170によって適用される予測モデルと混同されるべきでない、これらのラベル付けモデルは、人間のユーザによって手作業でラベル付けされてよい更に他のトレーニングセット(図示せず)に基づいてトレーニングされてよい。そのようなトレーニングを達成するために、勾配降下のバージョンのような様々な学習アプローチが適用されてよい。
図8は、トレーニング例を創成して文脈状態予測を生成するために特徴セットを処理する方法800の一例を例示している。方法800は、トレーニングセット創成デバイス150、予測デバイス170及び割込みサービスデバイス120によって行われる操作に対応してよい。幾つかの実施形態において、方法800は、トレーニングセット創成命令272、モデルアプリケーション命令272又はクエリサービス命令278に対応してよい。様々な代替的なアプローチが実施されてよいことが明らかであろう。例えば、幾つかの実施形態では、トレーニングセットを更新し且つ予測モデルを適用するために、別個の異なるアルゴリズムが定められてよい。
方法800は、(例えば、特徴抽出装置から又はスケジュールされたタスクに基づいて新しい特徴セットを取得することに応答して)ステップ805において開始し、ステップ810に進み、ステップ810で、デバイスは、トレーニングが、受信する特徴セットと関連するユーザのために現在有効にされているか否かを決定する(例えば、幾つかの実施形態において、トレーニングは、予測モデルがメモリ及び処理リソースを節約するよう十分にトレーニングされているとみなされるときに、オフにされてよい)。トレーニングがオフにされるならば、方法800は、スキップしてステップ825に進んでよい。そうでないならば、デバイスは、受信する特徴セットを格納し且つ新しいトレーニング例を既存のトレーニングセットの部分として格納するトレーニング例の新しい記録を創成する。理解されるように、特徴セットは、命令を実行しているデバイスに依存して様々なソースから取得されてよい。取得することは、他のデバイスから特徴セットを受信すること(例えば、特徴抽出デバイス140及び予測デバイス170が物理的に別個のデバイスに実装される場合)又は(例えば、ソケット又は共有メモリを介して)他のローカルプロセスから特徴セットを受信すること(例えば、特徴抽出デバイス140及び予測デバイス170が同じデバイス内の別個のプロセス又はOSモジュールとして実装される場合)を含んでよい。
ステップ825において、デバイスは、受信した特徴セットに1以上の予測モデルを適用して、ユーザの現在の文脈状態の1以上の測定値を取得する。ステップ830において、デバイスは、(例えば、以前に利用できなかったユーザが現在利用可能であるならば、或いは受容性が60の値から20の値に減少したならば)決定された文脈状態が以前に決定された文脈状態と異なるか否かを決定し、そうであるならば、ステップ835に進み、ステップ835で、デバイスは、決定された文脈状態を現在の文脈状態として格納する(以前の文脈状態を潜在的に上書きする)。
ステップ840において、加入サービスデバイスは、任意のクライアントアプリケーションがこのユーザについての更新に以前に加入していたか否かを決定し、そうであるならば、ステップ845において新しい文脈状態を加入したアプリケーションにプッシュする。このアプローチは、クライアントアプリケーションが全ての更新に単に加入する実施形態にとって十分なことがある。クライアントアプリケーションが、更新がプッシュされるべきとき(例えば、ユーザが利用可能になるとき、受容性又は可用性が増加するとき、又は受容性が少なくとも50であるとき)についての1以上の基準を特定することがある他の実施形態では、追加的な条件ブロックをステップ840とステップ845との間で実行して、更新がどのクライアントアプリケーションにプッシュされるかを決定するためにどのクライアントアプリケーションの基準が満たされたかを決定してよい。次に、方法は、ステップ850に進んで終了する。
図9は、受信したフィードバックに基づいて予測モデルを更新する方法900の一例を例示している。方法900は、トレーニングセット創成デバイス150及び予測モデルトレーニングデバイス160によって行われる操作に対応してよい。幾つかの実施形態において、方法900は、トレーニングセット創成命令272(若しくはフィードバック解釈命令273)又は予測モデルトレーニング命令275に対応してよい。様々な代替的なアプローチが実施されてよいことは明らかであろう。例えば、幾つかの実施形態では、トレーニングセットを更新し且つ予測モデルをトレーニングするために、別個の異なるアルゴリズムが定められてよい。
方法は、(例えば、フィードバック情報の受信に応答して或いはスケジュールされたタスクに基づいて)ステップ905において開始し、ステップ910に進み、ステップ910で、デバイスは、受信したフィードバックから1以上のラベルを解釈する。例えば、ステップ910は、フィードバックから手作業で提供されたラベルを単に読み取ること又は別個のトレーニングモデル(例えば、ロジスティック回帰のような分類モデル)をフィードバック(及び、幾つかの実施形態では、ラベル付けされるべき関連トレーニング記録中に格納される特徴)に適用することを含んでよい。ステップ915において、デバイスは、(例えば、そこに格納された特徴セットが創成又は受信されたときのタイムスタンプに基づいて)フィードバックと同時に存在する任意の記録を探し出してよい。幾つかの実施形態では、未だラベル付けられていないトレーニング例のみがステップにおいて探し出されてよいのに対し、他の実施形態では、追加的なフィードバックに基づいて以前にラベル付けされた例を更新するために、ラベル付けされていない例及びラベル付けされた例が取得されてよい。ステップ920において、デバイスは、解釈された(複数の)ラベルに従って各抽出されたトレーニング例の記録にラベルを付ける。
ステップ925において、デバイスは、トレーニングセットの減衰(decay)が有効化されているか否かを決定してよい。例えば、幾つかの実施形態では、新しい記録が追加されたときに、古いトレーニング例は(少なくとも現在のフィードバックが当て嵌まるユーザに関して)トレーニングセットから除去されてよい。これは、ユーザの集団から引き出された例に基づいた一般的なトレーニングセットを最初に使用され、徐々に補充し、特定のユーザに基づいて創成された例に置き換えることにより、システムの動作をユーザの挙動及び習慣に個人化(パーソナライズ)する場合に、特に有用であることがある。減衰が有効化されるならば、デバイスは、(例えば、最も古い記録を削除することによって或いは最も古い記録が現在のユーザのトレーニングモデルとして使用されないようにフラグを立てることによって)ステップ935において最も古い記録をトレーニングセットから削除する。幾つかの実施形態において、1つの古いトレーニング例は、減衰が有効化されているときに各々の新しいトレーニング例について削除されてよいが、他の割合も可能である。
ステップ935において、デバイスは、(複数の)予測モデルがトレーニングされた最後の時間から、幾つの新しい記録が追加されたか(或いは幾つの記録がラベル付けされたか)を決定する。この数が5(又は適切とみなされる何らかの他の閾値)を超えるならば、方法900はステップ945に進み、トレーニングセットの現在の反復に関する予測モデルを再トレーニングする。スケジュールされた時にモデルを再トレーニングすることのようなモデル再トレーニングのための適切な時を特定するための様々な代替的な方法が明らかであろう。次に、方法900はステップ950に進んで終了する。
図10は、モデルをトレーニングする方法1000の一例を例示している。方法1000は、予測モデルトレーニングデバイス160によって行われる操作に対応してよく、予測モデルトレーニング命令275によって実施されてよい。例えば、プログラマ定義アルゴリズム(programmer-defined algorithms)、ニューラルネットワーク、ベイジアンネットワーク(Bayesian network)などのような、モデルトレーニングに対する様々な代替的なアプローチが明らかであろう。
方法は、ステップ1002において開始し、ステップ1004に進み、ステップ1004で、デバイスは、モデルが創成されるべき所与のパラメータのためにラベル付けされたデータセット(例えば、予測モデルをトレーニングするためのトレーニングセット700又はラベル付けモデルをトレーニングするための他のトレーニングセット(図示せず))を取得する。ラベル付けられていないトレーニングセットからモデルをトレーニングするための様々な代替的なアプローチが明らかであろう。様々な実施形態において、トレーニングセットは、1以上の特徴(例えば、上述のような様々な使用情報又はフィードバック情報など)及びその特徴セットから引き出される適切な結論を特定するトレーニング例の多数の記録を含んでよい。
ステップ1006において、デバイスは、データセット内で識別された特徴の数(或いはモデルがデータセット内のあらゆる特徴を利用しない場合には、トレーニングされているモデルに関連する特徴の数)を識別し、ステップ1008において、結果として得られるモデルにおいて使用されるべき係数のセットを初期化する。様々な実施形態によれば、定数として機能する1つの追加的な係数と共に、係数が各特徴について創成される。モデルが数値を出力するようにトレーニングされている場合、線形回帰アプローチが利用されてよく、その場合、最終モデル関数は、以下の形態を取り、
ここで、Xは、特徴{x
1,x
2,...}のセットであり、係数{θ
0,θ
1,θ
2,...}を方法1100によって調整して、トレーニングデータセットから学習される傾向と一致する適切な関連性推定(relevance estimation)を出力として提供する。幾つかの実施形態において、最終モデル関数は、以下のようなシグモイド関数を組み込んでよく、
ここで、係数の調整は、提供(offering)の関連性の推定として働く0〜1の間の値を出力する関数h(X)をもたらす。様々な実施形態によれば、係数はゼロの値に全て初期化される。 幾つかの実施形態では、h(X)に含めるための追加的な特徴(及び関連する係数)は、例えば、x
1 2又はx
1x
2のような、トレーニングセット内の特徴からを構築されてよいことが明らかであろう。
方法は、ステップ1010,1012において2つのループ変数i及びpを0にそれぞれ初期化することによって、係数をトレーニングすることを開始する。次に、ステップ1014において、デバイスは、現在の係数θ
pに関するコスト関数J(θ)(cost function)の偏導関数(partial derivative)を取得し、ここで、コスト関数は、幾つかの実施形態において、以下のように定められてよく、
ここで、mは、トレーニングデータセット内のトレーニング例の数であり、h
θ(x)は、現在の係数セットθを使用するトレーニングされた関数であり、x
(j)は、j番目のトレーニング例についての特徴のセットであり、y
(j)は、j番目のトレーニング例についての所望の出力(即ち、ラベル)である。よって、バッチ勾配降下アプローチに続いて、係数p(θ
p)に関する偏導関数は、以下の通りであり、
ここで、x
p (j)は、j番目のトレーニング例におけるp番目の特徴(又は、p=0のとき、x
p (j)=1)である。
ステップ1016において、デバイスは、pを増分し、ステップ1018において、デバイスは、pがh(X)に含められるべき特徴の総数を今や超えているか否かを決定することによって、全ての係数が現在のループ内でアドレス指定されているか否かを決定する。そうでないならば、方法はステップ1014に戻り、次の偏導関数項を見出す。
現在の反復について全ての偏導関数が見出された後に、方法1000は、ステップ1020において、ループ変数pをゼロにリセットすることに進む。次に、ステップ1022において、デバイスは、ステップ1114において見出される対応する偏導関数に基づいて並びに事前設定された学習速度に基づいて、p番目の係数θ
pを更新する。例えば、デバイスは、以下の更新ルールを適用してよく、
ここで、αは、例えば、0.1,0.3,1、又は各反復についての所望の変化速度のために適切に選択される任意の他の値のような、学習速度である。
ステップ1024において、デバイスは、pを増分し、ステップ1026において、デバイスは、pがh(X)に含められるべき特徴の総数を今や超えているか否かを決定することによって、全ての係数が現在のループ内でアドレス指定されている否かを決定する。そうでないならば、方法はステップ1022に戻り、次の係数を更新する。方法1000によれば、全ての偏導関数は、偏導関数が部分的に更新された値に基づいて取られないよう、第2のループ内の係数を実際に修正する前に第1のループ内で見出されることに留意のこと。他の実施形態は、係数のそのような「同時」更新を実施しないことがある。
全ての係数が更新された後に、方法1000は、ステップ1028に進み、ステップ1028で、変数iは増分される。ステップ1030において、デバイスは、方法1000が無限にループしないことを保証するために、所定の最大反復回数を今や超えているか否かを決定する。1000回、5000回、10000回などのような、十分に高い最大反復回数が選択されてよい。最大の反復に達していないならば、方法1000は、ステップ1032に進み、ステップ1032で、デバイスは、トレーニングセットに基づいて、コスト関数j(θ)を使用して、現在のコストを計算する。ステップ1034において、デバイスは、最後の反復から現在の反復までのコストの変化が最小閾値を満たさないか否かを決定することによって、関数h(X)が許容可能な解に収束したか否かを決定する。変化が閾値を超えるならば、方法1000は、ステップ1012に戻り、別の係数更新ループを行う。他方、最大反復に達するか、或いはコストの変化が最小閾値より下であるならば、方法1000は、ステップ1036に進み、ステップ1036で、デバイスは、パラメータを抽出するための新しいモデルの一部として係数を格納し、方法1000はステップ1038に進んで終了する。
回帰以外の後続のアプローチに加えて、他の実施形態は、バッチ勾配降下以外の回帰アプローチにおいて係数を調整するために異なる方法を利用してよいことが、明らかである。例えば、幾つかの実施形態は、確率的勾配降下を使用してよく、各々の係数更新は、単一のトレーニング例に基づいて行われ(それにより、偏導関数から合計が除去され)、方法は、更に、各々のそのような例を通じて追加的に反復する。他の実施形態では、回帰のための正規方程式を使用して、行列ベースの非反復的アプローチを使用して適切な係数を見出してよく、係数のセットは、以下のように計算され、
ここで、Xは、全てのトレーニング例からの特徴の行列であり、yは、ラベルの関連ベクトルである。
前述によれば、様々な実施形態は、クライアントアプリケーションがユーザ対話を開始するための適切なときを決定する手段を提供する。スマートフォン又は他のデバイスの使用をモニタリングすることによって、オペレーティングシステム又は他のサービスは、ユーザが様々な種類の対話を受信する用意があるときを識別することがある。更に、異なる種類の機会(例えば、物理的機会に対する精神的機会又はその段階(gradations))の異なる機械学習モデルをトレーニングすることによって、対話のための適切なときの識別を、特定の種類、フォーマット、媒体、又はクライアントアプリケーションによって開始されるように提案される或いは望まれるユーザ対話のコンテンツに合わせて更に調整することができる。様々な追加的な利益は、前述の観点から明らかであろう。
本発明の様々な例示的実施形態がハードウェア又はファームウェアにおいて実施されてよいことが前述の記述から明らかであるはずである。更に、様々な例示的な実施形態は、本明細書に詳細に記載する動作を行うるために少なくとも1つのプロセッサによって読み取られて実行されることがある、機械可読記憶媒体に格納された命令として実装されてよい。機械可読記憶媒体は、パーソナルコンピュータ若しくはラップトップコンピュータ、サーバ、又は他のコンピューティングデバイスのような機械によって読み取り可能な形式において情報を格納する任意の機構(メカニズム)を含んでよい。よって、機械可読記憶媒体は、読出し専用記憶装置(ROM)、ランダムアクセス記憶装置(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、及び類似の記憶媒体を含んでよい。
当業者は、本明細書中のあらゆるブロック図が本発明の原理を具現する例示的な回路構成の概念図を表すことを理解するはずである。同様に、あらゆるフローチャート、フロー図、状態遷移図、擬似コード、及び同等物は、機械可読媒体中に実質的に表され、よって、コンピュータ又はプロセッサが明示的に示されていようが示されていまいが、そのようなコンピュータ又はプロセッサによって実行されることがある、様々なプロセスを表すことが理解されるであろう。
様々な例示的な実施形態をその特定の例示的な態様を特に参照して詳細に記載したが、本発明は他の実施形態が可能であり、その詳細は様々な明らかな態様において変更可能であることが理解されるべきである。当業者には容易に明らかであるように、本発明の精神及び範囲内に留まりながら、変形及び修正をもらさすことができる。従って、前述の開示、記述及び図は、例示的な目的のためだけにあり、請求項によってのみ定められる本発明を如何様にも限定しない。