特許第6198227号(P6198227)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

<>
  • 特許6198227-状況に基づく機器動作の予測 図000002
  • 特許6198227-状況に基づく機器動作の予測 図000003
  • 特許6198227-状況に基づく機器動作の予測 図000004
  • 特許6198227-状況に基づく機器動作の予測 図000005
  • 特許6198227-状況に基づく機器動作の予測 図000006
  • 特許6198227-状況に基づく機器動作の予測 図000007
  • 特許6198227-状況に基づく機器動作の予測 図000008
  • 特許6198227-状況に基づく機器動作の予測 図000009
  • 特許6198227-状況に基づく機器動作の予測 図000010
  • 特許6198227-状況に基づく機器動作の予測 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6198227
(24)【登録日】2017年9月1日
(45)【発行日】2017年9月20日
(54)【発明の名称】状況に基づく機器動作の予測
(51)【国際特許分類】
   H04M 1/00 20060101AFI20170911BHJP
   H04M 11/00 20060101ALI20170911BHJP
【FI】
   H04M1/00 R
   H04M11/00 302
【請求項の数】10
【全頁数】26
(21)【出願番号】特願2014-550338(P2014-550338)
(86)(22)【出願日】2012年12月19日
(65)【公表番号】特表2015-506617(P2015-506617A)
(43)【公表日】2015年3月2日
(86)【国際出願番号】US2012070431
(87)【国際公開番号】WO2013101567
(87)【国際公開日】20130704
【審査請求日】2015年11月24日
(31)【優先権主張番号】13/340,702
(32)【優先日】2011年12月30日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】チュー,デイヴィッド
(72)【発明者】
【氏名】カンサル,アマン
(72)【発明者】
【氏名】リュウ,ジエ
(72)【発明者】
【氏名】ヤン,ティンシン
【審査官】 山岸 登
(56)【参考文献】
【文献】 特開2004−152276(JP,A)
【文献】 特開2009−171160(JP,A)
【文献】 特許第3669702(JP,B2)
【文献】 特表2010−518416(JP,A)
【文献】 特開2005−043355(JP,A)
【文献】 特開2010−286924(JP,A)
【文献】 特開2011−076186(JP,A)
【文献】 特開2007−087374(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/01
3/048−3/0489
13/00
H04B 7/24− 7/26
H04M 1/00
1/24− 3/00
3/16− 3/20
3/38− 3/58
7/00− 7/16
11/00−11/10
99/00
H04W 4/00− 8/24
8/26−16/32
24/00−28/00
28/02−72/02
72/04−74/02
74/04−74/06
74/08−84/10
84/12−88/06
88/08−99/00
(57)【特許請求の範囲】
【請求項1】
1つまたは複数のコンテクスタから1つまたは複数の過去のコンテクスト値を取得するステップであって、前記1つまたは複数の過去のコンテクスト値は、モバイル機器に提供された特定のユーザ入力により機器動作が以前に開始された過去の事例に対応する、ステップと、
前記モバイル機器において前記機器動作を自動的に行うための決定規則を学習するように意思決定エンジンをトレーニングするステップであって、前記意思決定エンジンは、前記過去の事例に対応する前記1つまたは複数の過去のコンテクスト値を用いてトレーニングされる、ステップと、
前記決定規則を使用して、1つまたは複数の現在のコンテクスト値を評価し、前記1つまたは複数の現在のコンテクスト値は前記機器動作を生じさせるものであると判定するステップと、
前記特定のユーザ入力がない場合に、前記機器動作が前記1つまたは複数の現在のコンテクスト値により生じさせられることに応じて、前記モバイル機器に、前記特定のユーザ入力により以前に開始された前記機器動作を自動的に行わせるステップと
を含み、
個々の過去のコンテクスト値が、前記モバイル機器のユーザによる行動、および他のモバイル機器における他のユーザの行動を反映する、方法。
【請求項2】
個々の過去のコンテクスト値および個々の現在のコンテクスト値の両方が前記モバイル機器の物理センサから取得される、請求項1に記載の方法。
【請求項3】
前記行動が、前記ユーザが前記モバイル機器でアプリケーションを実行することを含む、請求項に記載の方法。
【請求項4】
前記行動が、前記ユーザが前記モバイル機器を使用して別のユーザと通信することを含む、請求項に記載の方法。
【請求項5】
個々の現在のコンテクスト値が、現在の時刻または前記モバイル機器の現在の位置を反映する、請求項1に記載の方法。
【請求項6】
前記意思決定エンジンが決定木を備える、請求項1に記載の方法。
【請求項7】
前記意思決定エンジンがベイズ分類器を備える、請求項1に記載の方法。
【請求項8】
前記ベイズ分類器が単純ベイズ分類器である、請求項に記載の方法。
【請求項9】
前記モバイル機器上に表示されたグラフィック・ユーザ・インターフェースを介して個々のコンテクスタが前記モバイル機器の前記ユーザにより選択されたことに応じて、前記個々のコンテクスタを有効/無効にするステップをさらに含む、請求項1乃至8いずれか一項に記載の方法。
【請求項10】
プロセッサに、請求項1乃至9いずれか一項に記載の方法を実行させるプログラム。
【発明の詳細な説明】
【背景技術】
【0001】
ユーザ入力に対するアプリケーション・ソフトウェアの反応性は、アプリケーションが比較的リソースを多く必要とするかどうかや、アプリケーションを実行しているデバイスの利用可能なハードウェア資源がアプリケーションのリソース要求量を満たすのに充分であるか等の多数の要因に応じて異なる可能性がある。例えば、モバイル機器のアプリケーションの中には起動までの待ち時間が10〜15秒程度と比較的長いものがある。この問題は、古いハードウェアを使用して新しいアプリケーションを実行する時に特に深刻になる。何故ならば、新しいアプリケーションは古いアプリケーションに比べてリソースをより多く必要とする傾向があるためである。
【発明の概要】
【発明が解決しようとする課題】
【0002】
アプリケーション起動までの待ち時間を短縮する一般的な手法の1つは、アプリケーションをメモリにロードするか、さらにはユーザが実際にアプリケーションを呼び出す前にアプリケーションの実行を開始しておくものである。しかし、モバイル機器はリソースが比較的制約されている傾向があり、現在使用されていないアプリケーションにメモリやプロセッサ資源を割り当てることが常に許容されるとは限らない。実際、場合によっては、この手法は、不必要なデータをロードしたり、不必要な命令を実行したりすることにより、不必要にバッテリ電力を消耗させてしまうことがある。
【課題を解決するための手段】
【0003】
本明細書に記載された実装例は自動的に機器動作を行うことに関する。そのような実装例の1つは、1つまたは複数のコンテクスタ(contextor)から1つまたは複数のコンテクスト値を得ることを含む技術として顕在化される。この技術は、1つまたは複数の決定規則を備える意思決定エンジンを使用して、1つまたは複数のコンテクスト値および1つまたは複数の決定規則に基づいて、コンピューティング・デバイスで動作を行うかどうかを決定することを含むことができる。この技術は、意思決定エンジンが動作を行うと決定した場合にコンピューティング・デバイスでその動作を行うことも含むことができる。この技術は、動作に関連するフィードバックを使用して意思決定エンジンの決定規則を更新することも含むことができる。
【0004】
本発明に係る別の実装例は、1つまたは複数のコンテクスト値に基づいて事前に起動しておくアプリケーションを特定することを含む技術として顕在化される。この技術は、アプリケーションを事前に起動してアプリケーションを事前起動状態にしておき、事前起動に関連するフィードバックを受け取ることも含むことができる。
【0005】
本発明に係る別の実装例は、状況に基づく動作モジュールおよびコンピューティング・デバイスを含むシステムとして顕在化される。当該コンピューティング・デバイスは状況に基づく動作モジュールを実行するように構成することができる。状況に基づく動作モジュールは、第1の事例においては、コンテクスタのコンテクスト値を取得し、意思決定エンジンを使用して、コンテクスト値に基づいてコンピューティング・デバイスで特定の動作を行わないことを決定し、コンピューティング・デバイスでその特定の動作を行わないように構成することができる。状況に基づく動作モジュールは、動作に関連するフィードバックを意思決定エンジンに提供するように構成することもでき、意思決定エンジンが更新されて、コンテクスタがそのコンテクスト値を有する時に前記動作を行うことを学習することができる。状況に基づく動作モジュールは、第1の事例よりも後の第2の事例において、上述した第1の事例において取得されたコンテクスト値と同じコンテクスタのコンテクスト値を取得し、更新された意思決定エンジンを使用して、同じコンテクストに基づいてコンピューティング・デバイスで上記動作を行うことを決定し、当該動作をコンピューティング・デバイスで実行するように構成することもできる。
【0006】
上記で列挙した例は読者を助けるための簡単な参照を提供するものであり、本明細書に記載される概念の範囲を定義することを目的とするものではない。
【0007】
添付図面は、本特許で伝達される概念の実施を説明する。例示される実施の特徴は、添付図面と併せて以下の説明を参照することにより容易に理解できよう。各図面では、該当する場合は同様の参照符号を使用して同様の要素を示す。さらに、各参照符号の一番左の数字は、その参照符号が最初に登場する図およびそれに関連する説明を表す。
【図面の簡単な説明】
【0008】
図1】本明細書に記載の概念のいくつかの実装を用いることができる例示的なシナリオを示す図である。
図2】本明細書に記載の概念のいくつかの実装によるモジュールの例示的アーキテクチャを示す図である。
図3A】本明細書に記載の概念のいくつかの実装による例示的なグラフィック・ユーザ・インターフェースを示す図である。
図3B】本明細書に記載の概念のいくつかの実装による例示的なグラフィック・ユーザ・インターフェースを示す図である。
図4A】本明細書に記載の概念のいくつかの実装による例示的な決定規則を示す図である。
図4B】本明細書に記載の概念のいくつかの実装による例示的な決定規則を示す図である。
図4C】本明細書に記載の概念のいくつかの実装による例示的な決定規則を示す図である。
図5】本明細書に記載の概念のいくつかの実装による例示的方法のフローチャートである。
図6】本明細書に記載の概念のいくつかの実装による例示的方法のフローチャートである。
図7】本明細書に記載の概念のいくつかの実装によるシステムの一例を示す図である。
【発明を実施するための形態】
【0009】
<概要>
本検討内容は、機器の意思決定エンジンが入手可能な情報に基づいて当該機器に自動的に各種動作を行わせることに関する。例えば、一部の実装例においては、ユーザが実際にその実行を要求する前に、特定のアプリケーションが起動される。場合によっては、ユーザがアプリケーションの実行を要求する前に当該アプリケーションを起動することでアプリケーション起動までの待ち時間を短縮することができ、より満足感の高いユーザ体験を提供することができる。本明細書において提供される具体例のいくつかは、モバイル機器との関係で説明される。これは、モバイル機器は比較的リソースが制約されており、本明細書中に開示される実装は、リソースが制約された機器で実施するのに特に適している可能性があるためである。ただし、本明細書中に開示される実装は、ラップトップ型PCやサーバー等の他の種類のコンピューティング・デバイスで実施することもできる。
【0010】
一般に、ユーザは、例えばマウス、スクロール・ホイール、タッチ画面、または他の入力方法を使用して、アプリケーションを表すアイコン、タイル、または他のインターフェース要素を特定し、選択することによってアプリケーションの実行を要求することができる。アイコンは、デスクトップ、メニュー、または他のインターフェースから選択することができる。本文献では、用語「起動」は、アプリケーションの実行を求めるそのようなユーザ要求を受け取るのに応答して通例発生する各種の動作を含む一般的な用語である。例えば、起動は、アプリケーションのためにメモリを割り振ること、およびアプリケーションを記憶装置から割り振られたメモリにロードすることを含むことができる。起動は、ロードされたアプリケーション・コードを実行して、アプリケーションの初期化に関連する機能を行うことも含むことができる。例えば、ネットワークからウェブ・ページ、画像、映像等のデータを取得するアプリケーション・コードを起動の一部として実行することができる。スレッドやプロセスなどのプロセッサ資源もアプリケーション起動の一部として割り振ることができる。
【0011】
アーキテクチャ的には、本明細書中に開示される技術は、1つまたは複数の「コンテクスタ」の値を種々の動作に対応付ける意思決定エンジンを使用して実施することができる。一般に、コンテクスタは、アプリケーションを起動する等の特定の動作を行うかどうかを決定するために意思決定エンジンが使用できる状態情報を提供する。例えば、あるコンテクスタは、加速度計、光センサ、全地球測位システム(「GPS」)、マイクロフォン、時計等のモバイル機器の1つまたは複数の物理センサから値を直接得る、または論理的に値を導出する。他のコンテクスタは、特定のアプリケーションを要求する、特定の家族に電話をする、特定の単語を含むテキスト・メッセージを送信する等のユーザの行動を反映することができる。
【0012】
本明細書において、用語「コンテクスタ」は、一般に、例えばセンサ、オペレーティング・システム、個々のアプリケーション等から機器が入手することができる情報の供給源の意味で使用する。用語「コンテクスト値」は個々のコンテクスタの値の意味で使用し、直接的な値(例えば周囲温度)、または論理的に導出された値(例えば温度を「寒い」、「暖かい」等の単語に変換することによる)のいずれをも含む。一般に、意思決定エンジンは、1つまたは複数のコンテクスタの現在または過去のコンテクスト値(順序を含む)についてとるべき動作を学習することができる。様々な動作から暗黙的または明示的にフィードバックを提供して意思決定エンジンの精度を改善し、それにより、特定のコンテクスタについて特定のコンテクスト値を学習させ、それを使用して特定の動作を行わせる。意思決定エンジンは、意思決定エンジンがユーザに対して特定の動作を自動的に行うことを決定する事例と、ユーザが直接、すなわち意思決定エンジンの介在なしに動作を行った事例の両方から学習できることに留意されたい。
【0013】
一般に、現在または過去のコンテクスト値を使用して個々の意思決定エンジンを学習させ、特定の動作を行うかどうかを決定することができる。特に断らない限り、本明細書で使用する用語「コンテクスト値」は、特定のコンテクスタに関しての現在の値または過去の値のいずれをも意味する。実装例によっては、コンテクスタ・ログを使用して、時間の経過に伴うコンテクスト値の履歴を記憶する。さらに、場合によっては、コンテクスト値の特定の系列をコンテクスタ・ログから取得し、個々の意思決定エンジンにより適用することができる。コンテクスト値の系列の一例としては、例えば、ユーザが常に3つの異なるアプリケーションを特定の順序で使用するなどのアプリケーションの使用パターンなどがある。
【0014】
本発明に係る動作の一例は、上述のアプリケーションの起動である。本明細書で使用する用語「事前起動(prelaunch)」は、ユーザが何らかの種類の機器入力を提供することによってアプリケーションの立ち上げを実際に要求する前に少なくとも部分的にアプリケーションを起動しておくという意味で使用する。例えば、ユーザは、特定の相手との通話を終えた直後にソーシャル・ネットワーキング・アプリケーションを開いて、その人物のソーシャル・ネットワーキング・プロフィールにおいて最新の状況、写真、コメント等を確認することが多いとする。意思決定エンジンは、例えば通話の最中やユーザが通話を終了した直後等に、ユーザが実際にアプリケーションの実行を要求する前にソーシャル・ネットワーキング・アプリケーションを事前起動しておくことを学習することができる。ユーザのために先んじてソーシャル・ネットワーキング・アプリケーションを事前起動することにより、一旦意思決定エンジンが該当する状況下で事前起動を行うことを学習すると、ユーザがソーシャル・ネットワーキング・アプリケーションを呼び出す際に体験する待ち時間が比較的短縮される可能性がある。この場合は、電話ログのコンテクスタが、ユーザが電話で話をした様々な連絡先を示すコンテクスト値を提供することができる。一部の実装例では、例えば、通話が行われた時刻/日/日付、ボブがユーザに電話をかけたのか、もしくはユーザがボブに電話をかけたのか、ボブおよび/またはユーザが職場の電話番号から電話をかけたのか、もしくは個人の電話番号から電話をかけたのか等の通話に関する他の情報も電話ログのコンテクスタから得ることができる。
【0015】
本発明に係る動作の別の例は、機器の着信音の音量を自動的に調節することである。マイクロフォンで検出された周囲雑音が比較的高い時に着信音の音量を上げることが多いユーザを考えたい。意思決定エンジンは、マイクロフォンで検出された周囲雑音のコンテクスタの値が一定の閾値を超える時に動作(着信音量の増大)を行うように学習することができる。この周囲雑音の閾値は、その動作を行わせる特定のコンテクスト値として意思決定エンジンで学習することができる。言い換えると、意思決定エンジンは、周囲雑音のコンテクスタから得られたコンテクスト値が、着信音量の増大が意思決定エンジンが行うのに適した動作であることを示す状況では、ユーザ入力がなくとも予測的に着信音の音量を増大させることができる。時間の経過に伴い、意思決定エンジンは、(1)周囲雑音が高い状況下では着信音量を上げる動作をとり、(2)意思決定エンジンにその動作をとらせる周囲雑音の量の精度を改善し、(3)例えば種々のレベルの周囲雑音および/またはユーザの設定に応じて、特定の音量レベルを高く、または低く調節することを学習することができる。
【0016】
上記のように、意思決定エンジンは、特定の動作が適切であったかどうかを示すフィードバックを介して学習させることができる。したがって、意思決定エンジンは、ある動作を行った後にフィードバックを受け取り、そのフィードバックを使用して意思決定エンジンの精度を改善することができる。意思決定エンジンが着信音の音量を上げる上記の例を考えたい。その後、ユーザがかかってきた電話を無視したり、着信音の音量を下げたりすると、それは意思決定エンジンにとって否定的なフィードバックとなる可能性がある。上記のソーシャル・ネットワーキング・アプリケーションを事前起動する例では、フィードバックは、アプリケーションが起動されてから所定量の時間以内、例えば30秒以内にユーザが実際にソーシャル・ネットワーキング・アプリケーションを起動するための何らかの機器入力を提供することを決定したかどうかを示す。ユーザが機器入力を提供した場合、これは一般には意思決定エンジンにとって「肯定」のフィードバックと見なすことができ、ユーザが特定の家族に電話をした直後にアプリケーションを起動する動作をとる決定を強化する。反対に、所定量の時間内にユーザがソーシャル・ネットワーキング・アプリケーションを起動する機器入力を提供しない場合は、意思決定エンジンにとって「否定」のフィードバックと見なすことができ、意思決定エンジンに、そのような状況でソーシャル・ネットワーキング・アプリケーションを事前起動する確率を下げさせる。
【0017】
この例では、アプリケーションは必ずしも明示的なフィードバックを意思決定エンジンに提供しないことに留意されたい。むしろ、フィードバックは暗黙的であり、例えばアプリケーションは、ユーザがアプリケーションを起動したか、または起動しなかったかを報告する必要はない。代わりに、その情報はモバイル機器のオペレーティング・システムから提供することができ、この場合、意思決定エンジンはオペレーティング・システムの一部となる。その他の場合においては、アプリケーションから、例えば、意思決定エンジンによって行われた特定の動作が適切であったかどうかを示すためにアプリケーションが意思決定エンジンに送る数値またはブール値から明示的なフィードバックを得ることができる。明示的なアプリケーションのフィードバックの一例として、アプリケーションは、アプリケーションを事前にロードするのにかかった時間を意思決定エンジンに通知することができる。一般に、あるアプリケーションの事前ロード時間が比較的長いことは、そのアプリケーションが事前ロードするのに適したアプリケーションであることを示唆し、したがって、アプリケーション起動決定エンジンにとって肯定的なフィードバックとして働く。逆に、事前ロード時間が比較的短いことは、そのアプリケーションを事前ロード時間することで得られる利益が比較的少ないことを示唆し、したがってアプリケーション起動決定エンジンにとって否定的なフィードバックとして働く。
【0018】
上記のようなアプリケーションからのフィードバックは、コンテクスト値がアプリケーション使用パターンの非常に優れた、またはほぼ完璧な指標として機能する場合でも有用である可能性があることに留意されたい。例えば、1つまたは複数のコンテクスタが特定のアプリケーションが近い将来にほぼ確実にユーザによって起動される見込みであることを示す場合でも、通常通りのアプリケーションのロードを迅速に行えばユーザが待ち時間を全く知覚しない場合にはほとんど利益が得られない。逆に、1つまたは複数のコンテクスタが、ユーザが所与のアプリケーションを起動する比較的不確実な兆候しか提供しない場合でも、そのアプリケーションが事前起動しなければユーザに反応するようになるまでに長時間を要する場合には、アプリケーションを事前起動することがなお有用である可能性がある。
【0019】
<例示的なシナリオ>
図1は、本発明に関し、状況を使用して先を見越して機器動作を行うことができるシナリオ100を説明する図である。シナリオ100は事例1および事例2を伴い、それぞれを以下において説明する。事例1から始めると、例示的シナリオ100は、ユーザが特定のアプリケーション、例えば上記のソーシャル・ネットワーキング・アプリケーションの起動を要求した直後、例えば5秒後のモバイル機器110を示している。例えば、ユーザは、(キーボード、音声指示、トラックボール、タッチ画面等を介して)アプリケーションを起動することを指示する何らかの種類の機器入力を提供している。しかし、アプリケーションは、何らかの初期化処理を行っているために、例えば、記憶装置からメモリにロード中、オペレーティング・システムによりアクティブなアプリケーション・コンテクスト(プロセスやスレッド)に切り替え中、ネットワークを通じてデータの取得を試みている等のために、ユーザ命令にはまだ反応しない可能性がある。
【0020】
しかし、図1に示すように、モバイル機器110は、アプリケーションを事前起動してユーザに知覚される待ち時間を短縮するように構成することが可能な状況に基づく動作モジュール111を含むことができる。一般に、状況に基づく動作モジュール111は、モバイル機器からコンテクスト、例えば「事例1」ではモバイル機器を使用して「ボブ」に電話をかけたことを示す1つまたは複数のコンテクスト値を取得することができる。コンテクスト値は、その通話がソーシャル・ネットワーキング・アプリケーションを起動するユーザ要求を受け取る直前、例えば2分以内に発呼された、または着信されたことを示すこともできる。時間の経過に伴って、状況に基づく動作モジュール111は、ソーシャル・ネットワーキング・アプリケーションを事前起動することが、ユーザがボブに電話をかけた、またはボブからの電話を受けた後にユーザのために行うのに適した動作であることを学習することができる。したがって、「事例2」においては、状況に基づく動作モジュールは、ユーザが実際にアプリケーションを要求する前にソーシャル・ネットワーキング・アプリケーションを起動しておくことができる。したがって、次にユーザがボブに電話をかける際にはソーシャル・ネットワーキング・アプリケーションを初期化し、ユーザが使用できる状態にしておくことができる。これを事例2に概略的に示し、事例2では事前起動の一部としてソーシャル・ネットワーキング・アプリケーションが何枚かの写真を既にモバイル機器にダウンロードしている。
【0021】
<例示的なアーキテクチャ>
図2は、状況に基づく動作モジュール111の例示的アーキテクチャを示す図である。図2に示すように、状況に基づく動作モジュール111は、コンテクスト・マネジャ210、マッピング・マネジャ220、および動作マネジャ230を含むことができる。一般に、コンテクスト・マネジャ210は、時間211、場所212、電話ログ213、周囲雑音214、周辺光215、アプリケーションの使用状況216等を含む1つまたは複数のコンテクスタを管理するように構成することができる。コンテクスト値は、時間211についてはローカル機器のクロックおよび/または時刻サーバにより、場所212についてはGPSシステムおよび/またはセルラー網による三角測量により、電話ログ213については通話記録アプリケーションにより、周囲雑音214についてはローカル機器のマイクロフォンにより、周辺光215についてはローカル機器の光センサにより取得することができ、およびアプリケーションの使用状況216についてはオペレーティング・システムから取得することができる。一般に、個々のコンテクスト値は、例えばセンサからモバイル機器でローカルに得ることができ、事例によっては1つまたは複数のローカルのコンテクスタ・ログに記憶される。ただし、事例によっては、コンテクスタ・ログをリモートで、例えばサーバに保持および記憶することができ、状況に基づく動作モジュールで使用するためにモバイル機器によって取り出すことができる。
【0022】
図2に図示しないコンテクスタの他の例も企図される。一般に、他のコンテクスタは、モバイル機器110の各種機器センサ、および/またはオペレーティング・システム・ログ等、モバイル機器で保持される他の情報から得ることができる。下記で詳細に説明するように、コンテクスタは、例えば、コンテクスト・マネジャ210で使用するコンテクスタをユーザが選択できるグラフィック・ユーザ・インターフェース(「GUI」)を介してユーザが選択できるようにすることができる。
【0023】
本発明に係る動作を行うために意思決定エンジンが使用できる新しいコンテクスタを開発者が構築できることにも留意されたい。例えば、モバイル機器に電子コンパスをインストールするサード・パーティのアプリケーションを考えたい。電子コンパスの値、例えば方位角や論理的な方向(北、北西等)を提供する対応するコンテクスタをこの時にインストールすることができる。既存の意思決定エンジンは、新たにインストールされたコンテクスタにそれ以上変更を加えずに使用して各種動作を行うことを学習することができ、例えば、新しいコンテクスタをコンテクスト・マネジャによって提供される既存の機構に「プラグ・イン」することができる。これは、新しいコンテクスタがモバイル機器の製造者によって提供されるのか、モバイル機器のオペレーティング・システムの開発者(「ファースト・パーティ」)によって提供されるのか、またはサード・パーティーのアプリケーション開発者によって提供されるのかに関係なく該当する可能性がある。
【0024】
状況に基づく動作モジュール111はマッピング・マネジャ220も含むことができ、これは、個々のコンテクスタから提供されるコンテクスト値を対応する動作に対応付けるように構成することができる。マッピング・マネジャ220は、対応付けを行うように構成された1つまたは複数の意思決定エンジン、例えばアプリケーションまたは「アプリ」起動決定エンジン221、着信音量決定エンジン222、および/または画面輝度決定エンジン223を含むことができる。個々の意思決定エンジンは、確率論/統計/確率的モデル、機械学習技術を介したオンラインまたはオフライン学習等を含む種々の決定アルゴリズムを使用して実装することができる。意思決定エンジンの特定の実装に関係なく、意思決定エンジンで実装される決定アルゴリズムが、特定の動作を行うかどうかを判断することができる。一般に、以前の機器動作とコンテクスト値の履歴を使用して時間の経過と共に意思決定エンジンを学習させることができ、その結果、意思決定エンジンは、ユーザにとって有益な形で各種機器動作の選択の精度を改善することを学習する。以前の機器動作は、アプリケーションの事前起動など、以前に意思決定エンジンによって行われた機器動作、または、意思決定エンジンが事前起動することなくユーザ入力を介して直接アプリケーションを起動したなど、ユーザが同様の動作を行った事例である。上記でコンテクスタについて述べたように、ファースト・パーティまたはサード・パーティの開発者が、マッピング・マネジャに直接プラグ・インし、既存のコンテクスタを使用して決定を行って各種動作を行うことを開始することが可能な新しい意思決定エンジンを提供することができる。例えば、機器が単純ベイズ・ネットワーク(naive Bayesian)による意思決定エンジンを備えて製造され、その後サード・パーティーの開発者が、マッピング・マネジャにプラグ・インする時間ウィンドウ型の非常に高速の決定木意思決定エンジンを提供する。
【0025】
動作マネジャ230は、マッピング・マネジャ220の意思決定エンジンによって行うことが可能な各種動作を管理するように構成することができる。例えば、そのような動作には、アプリケーションの事前起動動作231、着信音量調節動作232、および/または画面輝度調節動作233が含まれる。一般に、マッピング・マネジャで管理される各意思決定エンジンは、動作マネジャで管理される動作の1つまたは複数を行うことができる。実装によっては、動作は、例えば動作マネジャ230で使用される動作をユーザが選択できるグラフィック・ユーザ・インターフェース(「GUI」)を介して、ユーザ選択可能とすることもできる。コンテクスタおよび意思決定エンジンと同様に、動作は、ファースト・パーティまたはサード・パーティーの開発者によって別途提供することもできる。例えば、上記の電子コンパスが、コンパスを照明する動作を提供することができる。時間の経過と共に、意思決定エンジンは、特定の時刻や周囲光が低い時等にユーザのためにコンパスを照明することを学習することができる。より一般的には、新しい動作を動作マネジャにプラグ・インして、既存の意思決定エンジンが既存のコンテクスタに応答して新たに利用可能となった動作を行うことを学習することができる。
【0026】
以下の説明では、アプリケーションの事前起動動作について全般的に説明すると共に、それぞれ事前起動動作の一部と見なすことができる個々の具体的な下位動作(例えばメモリからアプリケーション・コードをロードする、コードを実行する等)に関連して説明する。また、用語「事前起動」は、本明細書においては、ユーザがアプリケーションの実行を要求する前にアプリケーションの起動を少なくとも部分的に行うという意味で一般に使用することに留意されたい。したがって、事前起動ではアプリケーションの起動を少なくとも部分的に行って、アプリケーションを事前起動された状態(コード/データが既にメモリにロードされている、コードが既に実行されている等)にして、ユーザがその後アプリケーションの実行を要求した場合にアプリケーションを事前起動された状態から実行できるようにする。
【0027】
実装によっては、個々の意思決定エンジンは複数の動作を行うことができ、例えば事前起動される各アプリケーションを異なる動作として概念化することができることにも留意されたい。同様に、着信音量の調節は、1つの動作と考えることも、例えば音量を上げ下げするための個別の動作などの複数の動作を含むと考えることもできる。これは画面輝度の調節についても同様である。
【0028】
個々の意思決定エンジンが特定の動作を行うかどうかは、意思決定エンジンへの入力として機能するコンテクスタの値に応じて決まる。時間の経過に伴って、意思決定エンジンが動作を行った時に、個々の動作から肯定または否定的なフィードバックを得ることができる。そのフィードバックを使用して意思決定エンジンを更新して、例えば着信音量を自動的に上げたり、ユーザのためにアプリケーションを事前起動したりする等、機器のユーザに有用である可能性のある動作をとらせることができる。図2では、動作から意思決定エンジンへのフィードバックを、個々の動作と意思決定エンジンを結ぶ双方向の矢印で概略的に示している。
【0029】
図2に示す特定のコンテクスタ、意思決定エンジン、および動作は例示的なものであり、他のコンテクスタ、意思決定エンジン、および動作が企図されることにも留意されたい。例えば、上記のように、コンテクスタの値は、加速度計、温度センサ、電子コンパスまたはGPS、光センサ、マイクロフォン、カメラ、無線周波識別(RFID)タグの読み取り(例えば近距離通信を使用する)等の種々のセンサ、ならびにネットワークの可用性やリンクの品質から得ることができる。コンテクスタは、各種アプリケーションおよび/またはモバイル機器110のオペレーティング・システムから得ることもでき、例えばオペレーティング・システムが、時間のコンテクスタに使用される機器クロックを備える場合がある。例えば、モバイル機器110は、種々のアプリケーションがいつ起動されるかを追跡するオペレーティング・システムを含み、特定のアプリケーションの起動がコンテクスタの役割を果たすことができる。具体的には、例えばユーザがいくつかのアプリケーションを特定の順序で要求する傾向がある場合には、一部のアプリケーションが、他のアプリケーションを事前起動させる「引き金(trigger)」となるアプリケーションである場合がある。所与のアプリケーションへのログインやキーの押下の順序等のユーザの振る舞いもコンテクスタの役割を果たすことができる。
【0030】
所与のコンテクスタから得られるコンテクスト値は、未処理のデータであっても、より高いレベルの意思決定エンジンに提供してもよいことに留意されたい。例えば、未処理のGPSデータを、場所のコンテクスタにより、例えば自宅、職場、友人の家等の意味的に情報の多い論理的な場所に変換することができる。同様に、未処理の時計データを時間のコンテクスタにより、朝、午後、夕方、夜間等に変換することができる。
【0031】
意思決定エンジンに適する決定アルゴリズムの具体例としては、ベイズ・ネットワーク(例えば単純ベイズ・ネットワーク)分類器、決定木(例えば非常に高速の決定木)、サポート・ベクトル・マシン(SVM)、隠れマルコフ・モデル(HMM)、ガウス混合モデル(GMM)等がある。現在の時刻と論理的な場所が単純ベイズ・ネットワークに基づく意思決定エンジンのコンテクスタとして使用される単純なシナリオを考えたい。意思決定エンジンが実行中のアプリケーションを認識すると、意思決定エンジンは、その認識が発生した時刻についてアプリケーション・カウンタc_xを増分することができる。意思決定エンジンは、その認識が発生した論理的な場所を表す別のカウンタc_yも増分することができる。意思決定エンジンは、アプリケーションについてのカウンタPriorも増分することができ、これはアプリケーションが実行された合計回数を表す。意思決定エンジンが次に実行するアプリケーションを決定すると、意思決定エンジンは、現在の時刻を表す値c_x’および現在の論理的場所を表す値c_y’を取得することができる。そして、意思決定エンジンは、c_x’*c_x’*Priorの値を各アプリケーションに割り当て、最も高い値のアプリケーションを実行することができる。
【0032】
フィードバックは次のようにして発生する。予測が行われた後、ユーザが実際にアプリケーションを起動すると、意思決定エンジンは何れのアプリケーションが起動されたかを認識することができる。そして、その情報が、例えば変数c_x、c_y、およびPriorを使用して上記の手順に従って記録される。したがって、ユーザがこれまで特定のアプリケーションを同じ時刻および/または同じ場所で実行する傾向がある場合は、そのことが割り当てられる値を増大させ、次にユーザがその場所に滞在している時、および/または同じ時刻に意思決定エンジンがそのアプリケーションを実行する可能性を高くするように作用する。
【0033】
具体的な実装の1つでは、実行時のオーバーヘッド(CPUおよびメモリの利用量)が比較的低く、オフラインの学習処理を必要としないことから、非常に高速の決定木を使用する。さらに、ユーザの振る舞いの変化に適合しやすいため、そのような決定木の時間ウィンドウ型の実装を使用することもできる。非常に高速の決定木の詳細については、Domingos et al., “Mining High−Speed Data Streams,” KDD “00, Proceedings of the sixth ACM SIGKDD international conference on Knowledge discovery and data mining (pp. 71−80), 2000. Boston, MA: ACM Pressで得ることができる。
【0034】
一般に、コンテクスタの以前の値と動作のフィードバックを使用して意思決定エンジンを更新することができる。その結果、意思決定エンジンがそのフィードバックに基づいて学習するのにつれて、意思決定エンジンにより適切な動作をとらせることができる。実装によっては、コンテクスト値と動作のフィードバックを「ウィンドウ化」して古い値を割り引いて考慮する。例えば、ウィンドウ型ベイズ・アルゴリズムや決定木では、比較的最近(例えば、過去一週間、先月、過去45日間等)のデータのみをコンテクスタおよびフィードバックに使用して意思決定エンジンを訓練する。それにより、意思決定エンジンが、例えば急なユーザの振る舞いの変化に対応して、より迅速に学習することを助けることができる。
【0035】
この決定木の具体例では、意思決定エンジンは反復的にコンテクスト値を区分して、特定の動作に対応する値または値の範囲とする。決定木の各末端ノードが個々の動作を表すことができ、コンテクスト値は区分に使用される属性として表される。時間の経過と共に、末端ノード(動作)を検査ノードに置き換えることができ、検査ノードを分割して決定木で新しい規則を学習する。
【0036】
また、ここに開示されるアーキテクチャでは各種動作とコンテクスタ間の独立を可能とすることに留意されたい。ある意味では、動作とコンテクスタを図2のアーキテクチャに「プラグ・イン」することができる。言い換えると、新しいコンテクスタを追加して、意思決定エンジンがその新しいコンテクスタを使用して、モバイル機器で既に有効にされている特定の動作を行うかどうかを学習できるようにする。
【0037】
例えば、モバイル機器の位置で周辺光を監視する周辺光センサをコンテクスタとして追加することができる。周辺光が特定の機器動作と相関する傾向がある場合は、特定の意思決定エンジンが、周辺光についての特定の値に応答して1つまたは複数の既存の動作を開始できることを学習することができる。すなわち、意思決定エンジンは、その新しいコンテクスタに基づいて既存の機器動作を行うか否かについて新しい規則を学習することができる。
【0038】
コンテクスタと動作とが互いに独立していることにより得られる技術的利点の1つを以下の例で説明する。この例は、コンテクスト・マネジャ210で新しいコンテクスタを有効にすることによってユーザの満足度を向上させることができることを示す。上記の家族ボブと話をした直後に頻繁にソーシャル・ネットワーキング・アプリケーションを開くユーザを考えたい。このユーザは、毎朝、通常は1時間行う朝のジョギングから帰ってきた直後にソーシャル・ネットワーキング・アプリケーションを開く習慣もあるとする。通話コンテクスタだけを有効にし、他のすべてのコンテクスタを有効にしない場合、アプリケーション起動決定エンジンは、ユーザがモバイル機器でボブと通話をした後にソーシャル・ネットワーキング・アプリを事前起動することを学習することができる。しかし、時間のコンテクスタや周辺光のコンテクスタなど、時間に反応するコンテクスタがないため、意思決定エンジンは、ユーザが朝にソーシャル・ネットワーキング・アプリケーションを開く傾向があることを示すコンテクスト値を得ることができない。
【0039】
意思決定エンジンはこの例のユーザの習慣を学習するのに適したコンテクスタを持たないため、意思決定エンジンは、ユーザが朝のジョギングから戻る前にユーザのためにソーシャル・ネットワーキング・アプリケーションを事前起動することを学習することができない。現在の機器時間や周辺光センサ(例えば機器を持ってジョギングをするユーザの場合)などの新しい時間に反応するコンテクスタを有効にすることにより、既存のアプリケーション起動決定エンジンは、朝の適切な時間にモバイル機器でソーシャル・ネットワーキング・アプリケーションを事前起動することを学習することができる。肯定的なフィードバックでこの動作を強化することができ、例えば、ユーザが実際に毎朝ソーシャル・ネットワーキング・アプリケーションの実行を要求する時に肯定的なフィードバックが受け取られる。
【0040】
周辺光のコンテクスタと時間のコンテクスタとは互いに正確には連携しないことに留意されたい。例えば、両者の関係は、夏時間への切り替わり後または夏時間からの切り替わり後に急に変化する、または季節に伴って日の出の時刻が変わるのにつれて時間をかけて変化する。場合によっては、意思決定エンジンは、ユーザの習慣に応じて一方のコンテクスタまたは他方のコンテクスタを使用することを学習することができる。したがって、意思決定エンジンは、日の出の時間に関係なく決まった時刻に習慣的にジョギングをするユーザに対しては、時間のコンテクスタを使用してソーシャル・ネットワーキング・アプリケーションを事前起動することを学習することができる。逆に、時計の時間に関係なく日が昇る時間に習慣的にジョギングをするユーザには、意思決定エンジンは周辺光のコンテクスタを使用してソーシャル・ネットワーキング・アプリケーションを事前起動することを学習することができる。
【0041】
コンテクスタと動作が独立していることが有益であるさらに別の例として、既存の意思決定エンジンおよび既存のコンテクスタと共に機能するように新しい動作を有効にする以下の例を考えたい。ユーザがソーシャル・ネットワーキング・アプリケーションを事前起動するという1つの動作のみを有効にしており、上記のように機器時間および/または周辺光のコンテクスタを有効にしているとする。時刻の変化または朝の周辺光の変化は、意思決定エンジンがソーシャル・ネットワーキング・アプリケーションを事前起動するために使用するコンテクスト値の役割を果たすことができる。ただし、ユーザは、毎晩着信音の音量を下げ、朝起きた時に着信音の音量を戻すのを忘れる傾向もあるとする。着信音量調節動作232を有効にすることにより、着信音量決定エンジン222は、朝の一定の時刻、または朝に周辺光が増してきた時に着信音の音量を上げることを学習することができる。この場合、着信音の音量を上げたことからのフィードバックは、(1)ユーザが電話に出るか、または(2)調節後に着信音の音量を下げない場合に肯定と見なすことができる。着信音量決定エンジンは、夜の特定の時刻および/または周辺光が低減する時に着信音の音量を下げることも学習することができることにも留意されたい。
【0042】
上記の例では、周辺光のコンテクスタと併せて時間のコンテクスタを使用することが有益である場合がある。ユーザは日中にモバイル機器をポケットに入れる傾向があるとする。この場合、ユーザのポケットの中は昼間でも暗いため、周辺光がないことだけでは、着信音の音量を下げる適切な指示にはならない可能性がある。時間のコンテクスタも使用することにより、着信音量決定エンジンは、例えば、(1)周辺光が比較的低く、かつ(2)現在の時刻が例えば午後8時など比較的遅い時に着信音の音量を下げるという規則を学習することができる。
【0043】
<例示的なGUI>
図3Aおよび図3Bは、それぞれ例示的なグラフィック・ユーザ・インターフェース(「GUI」)300および350の図である。GUI300でユーザは1つまたは複数のコンテクスタを選択的に有効/無効にすることができ、GUI350でユーザは1つまたは複数の動作を選択的に有効/無効にすることができる。例えば、GUI300および/または350をモバイル機器で提示して、モバイル機器で有効にするコンテクスタおよび/または動作をユーザが選択できるようにする。一般に、新しいコンテクスタを有効にすることにより、ユーザは、既存の動作を実行するかどうかを決定する時に新しいコンテクスタから得られるコンテクスト値を意思決定エンジンに使用させることができる。同様に、新しい動作を有効にすることにより、ユーザは、意思決定エンジンに、既存のコンテクスタから得られるコンテクスト値に基づいてその新しい動作を実行するかどうかを決定させることができる。
【0044】
図3Aに関して、ユーザは、「有効にする」の列301から対応するブロックを選択することにより、GUI300を使用して個々のコンテクスタを有効にすることができる。所与のコンテクスタがユーザによって有効にされると、対応するブロックに「x」が表示され、それ以外の場合は空欄で表示される。したがって、図3Aは、ユーザが時間211と場所212を有効にし、電話ログ213、周囲雑音214、周辺光215、およびアプリケーションの使用状況216を無効にした設定を示している。
【0045】
図3Bに関しては、ユーザは、「有効にする」の列351から対応するブロックを選択することによりGUI350を使用して個々の動作を有効にすることができる。所与の動作がユーザによって有効にされると、対応するブロックに「x」が表示され、それ以外の場合は空欄で表示される。図3Bは、ユーザが特定の動作について下位動作を個々に選択状態にできるように複雑性を増した場合を示す。ここでは、ユーザはアプリケーション事前起動動作231全般を有効にしているが、図3Bで電子メール・アプリケーションの事前起動352に対応するブロックが空欄であることで示されるように、電子メール・アプリケーションの事前起動は明確に無効にしている。したがって、図3Bは、ユーザがアプリケーションの事前起動と着信音の調節を有効にした設定を示している。ただし、すべてのアプリケーションの事前起動を有効にする代わりに、ユーザは、アプリケーション事前起動決定エンジンで電子メール・アプリケーションが事前起動されることを明確に阻止している。より一般的には、複数の下位動作を実施する意思決定エンジンの場合、ユーザは、上記のように下位動作単位で特定の下位動作の有効/無効を切り替えることができる。
【0046】
<例示的な決定規則>
図4A、4B、および4Cは規則表400を示し、これは、各種の決定規則が時間の経過と共に変化する、または追加される様子を説明するために使用される例示的なデータ構造である。この例では、規則表400は、数個の意思決定エンジンに対応する組み合わせられた規則を示し、それらの規則は時間の経過と共にモバイル機器で進展する可能性がある。下記において詳細に説明するように、規則表400は、追加的なコンテクスタと動作が有効にされるのに従って、アプリケーション起動決定エンジン221および着信音量決定エンジン222が学習することが可能な決定規則を例示している。ただし、規則表400は、コンテクスタと動作を有効にすると新しい決定規則または更新された決定規則が発生することを例示するものであり、特定の意思決定エンジンがどのように決定規則を表すかを反映するとは限らないことに留意されたい。むしろ、個々の意思決定エンジンは、各自に備えられた特定の学習アルゴリズムを使用して決定規則を表すことができ、したがって決定規則は必ずしも別個の表で追跡する必要はない。例えば、決定木分類器は時間と共に変化し得る木構造を使用して決定規則を表すのに対し、単純ベイズ分類器は時間と共に変化し得る確率値を使用して決定規則を表すことができる。
【0047】
図4Aは、例えばユーザが着信音量の調節とソーシャル・ネットワーキング・アプリケーションの事前起動に関する2つの動作を有効にした時の初回の規則表400を示し、それらの動作は上記のようにアプリケーションを事前起動する動作の下位動作とすることができる。上記のように、ユーザはGUI350などのGUIを使用してそれらの動作を有効にすることができる。さらに、ユーザは、時間のコンテクスタ211と電話ログのコンテクスタ213の2つのコンテクスタを有効にしている。時間の経過に伴って、着信音量決定エンジンは、毎朝午前8時に着信音の音量を上げることを学習することができる。図4Aではこれを規則401として示し、これは着信音量調節動作を午前8時のコンテクスト値に対応付ける。同様に、アプリケーション起動決定エンジンは、電話ログのコンテクスタがユーザがたった今ボブと電話で会話をしたことを示す時には必ずソーシャル・ネットワーキング・アプリケーションを事前起動することを学習することができる。図4Aではこれを規則402として示し、これは「ボブ」の電話ログのコンテクスト値を、ソーシャル・ネットワーキング・アプリケーションを事前起動する動作に対応付ける。
【0048】
図4Bは、例えばユーザが電子メール・アプリケーションを事前起動する動作をさらに有効にした後の第2の規則表400を示す。上記のように、ユーザはGUI350などのGUIを使用してこれを行うことができる。この新しい動作を有効にすることにより、アプリケーション起動決定エンジン221は、ユーザが朝午前9時を少し過ぎた時に電子メール・アプリケーションを起動する傾向があることを時間の経過に伴って学習することができる。したがって、事前起動アプリケーション決定エンジンは、電子メール・アプリケーションを事前起動する動作を午前9時のコンテクスト値に対応付ける新しい規則403を学習することができる。
【0049】
図4Cは、例えばユーザが周囲雑音を測定するコンテクスタをさらに有効にした後の第3の規則表400を示す。例えば、周囲雑音は、ユーザのモバイル機器のマイクロフォンで測定することができる。ユーザがこの新しいコンテクスタを有効にしたため、着信音量調節意思決定エンジンは、時間のコンテクスタと周囲雑音のコンテクスタの両方に依存するように規則401の精度を改善することができる。具体的には、図4Cの規則401は、周囲雑音が50dBを上回る時に午前8時より後にのみ着信音の音量を調節することを示している。上記のように、実装例によっては、着信音を調節する特定の音量、着信音の音量が調節される前にどの程度の周囲雑音があるか、周囲雑音のために着信音量を調節できる特定の時間等についての推定精度を継続して改善することができる。
【0050】
上記の例を文脈に当てはめると、図4Cに示す規則401は、ユーザが一般に意思決定エンジンによって自動的に着信音量が上げられた時には音量をそのままにするが、周囲雑音が比較的低い時には着信音量を元の音量に下げる傾向があるという使用パターンを反映することができる。したがって、周囲雑音が比較的低かった状況では、着信音量を自動的に上げることが適切ではなかったという暗黙的な否定的なフィードバックをユーザが意思決定エンジンに提供したことになる。
【0051】
上記の説明を展開するためのさらなる視点として、ユーザは通常午前8時までには比較的騒がしい職場で仕事をしているが、休日に自宅にいる時には背景雑音がはるかに少ないとする。ユーザから見ると、モバイル機器が、ユーザが職場にいる日に着信音量を上げることを学習したようにすら見える可能性がある。しかし、ユーザは、後に、午前8時より後に例えば混んでいる飲食店など職場以外の比較的騒がしい場所にいる時にもモバイル機器が着信音量を上げることに気付く可能性がある。
【0052】
しかし、上記のように場所もコンテクスタとして使用することができる。上記の例では、例えば、ユーザが職場にいる時には着信音量を上げ、ユーザが自宅にいる時には着信音量を下げることを学習することにより、場所も、着信音量決定エンジンが規則401と同様の規則を学習するための適切なコンテクスタとなり得る。
【0053】
<第1の方法の例>
図5は、上記のような状況に基づく動作を実施するために使用できる例示的方法500を説明する図である。実装例によっては、方法500は、モバイル機器110の状況に基づく動作モジュール111によって行うことができる。ただし、下記で詳細に説明するように、方法500に関連する処理の一部は、1つまたは複数の他の機器、例えば1つまたは複数のサーバに割り振ることもできる。
【0054】
ブロック501において、1つまたは複数のコンテクスタが有効にされる。例えば、コンテクスト・マネジャ210が、モバイル機器110の製造者によって予めインストールされ有効にされた1つまたは複数のコンテクスタを備えることができる。他の実施では、コンテクスタは、例えばソフトウェアやファームウェアの更新を介して追加のコンテクスタをインストールすることにより、後に追加することができる。さらに他の実施では、状況に基づく動作モジュール111が、ユーザによりインストール可能な購入後付加用(aftermarket)ソフトウェアとして提供される。さらに他の実施例においては、コンテクスト・マネジャ210が、ユーザまたはソフトウェア/ファームウェアの更新で、コンテクスタ単位で個々のコンテクスタをインストールさせることができる。さらに、上記のように、実装によっては、ユーザが例えばGUI300を使用して適宜個々のコンテクスタをオンオフ設定(有効/無効)することができる。
【0055】
次に、ブロック502において、1つまたは複数の動作が有効にされる。コンテクスタに関して上記で述べたように、動作は製造時に有効にする、ソフトウェア/ファームウェアの更新やインストールの一部として提供する、または動作単位で個々にインストールすることが可能である。同様に、実装例によっては、ユーザが例えばGUI350を使用して選択しながら個々の動作をオン/オフ設定(有効/無効)することができる。
【0056】
次にブロック503において、各コンテクスタについて1つまたは複数のコンテクスト値が取得される。例えば、周辺光や音を反映する値を1つまたは複数のセンサから取得することができ、現在の機器時間を取得することができ、電話ログを入手することができ、機器のオペレーティング・システムと通信することにより最近のアプリケーションの振る舞いを監視する等が可能である。
【0057】
次にブロック504において、コンテクスタの値に基づいて決定を行う。例えば、1つまたは複数の意思決定エンジンが上記の決定アルゴリズムを実装して、コンテクスタの値を対応付けて1つまたは複数の動作を選択することができる。
【0058】
次にブロック505において、選択された1つまたは複数の動作が行われる。例えば、着信音量を調節して上げる、または下げる、1つまたは複数のアプリケーションを事前起動する等を行うことができる。
【0059】
次に、ブロック506において、動作フィードバックを使用して意思決定エンジンの決定規則を更新する。例えば、動作がアプリケーションの起動を含む場合、フィードバックは、起動後ユーザが所定量の時間以内にアプリケーションの使用を要求する時に肯定となり、それ以外では否定になる。着信音量の調節の場合には、フィードバックは、ユーザが所定の時間内にその動作を元に戻さない、またはその時間内に着信音量を調節することなく1つまたは複数回の通話に出る場合に肯定と考えることができる。ユーザが着信音量を下げる、または上げて元に戻すことによって動作を元に戻した場合は、否定的なフィードバックと見なすことができる。一般に、肯定的なフィードバックは個々の動作を強化するように作用し、その結果、意思決定エンジンは肯定的なフィードバックが得られた時と同じ値またはそれに近い値をコンテクスタが持つ時にその動作を実行し続ける。同様に、否定的なフィードバックは、否定的なフィードバックが得られた時と同じ値または近い値をコンテクスタが持つ時にその動作を行わないように意思決定エンジンを学習させる。
【0060】
方法500は、図5でブロック506からブロック503に戻る矢印で示すように反復的に行うことにより(1つまたは複数の)意思決定エンジンの精度を継続的に改善することができることにも留意されたい。一般に、ブロック503〜506は、各種動作が行われた時のより新しいコンテクスト値とより新しい事例に基づいて時間をかけて反復して行うことができる。新しいコンテクスタおよび/または新しい動作が有効にされた時には、それぞれブロック501および502が方法500への入り口点の役割を果たすことができる。また、意思決定エンジンの精度は時間の経過と共に改善されるので、特定の動作が事例によっては行われないが、コンテクスト値が同じである複数の後の事例で行われる可能性がある。これは、意思決定エンジンがその特定のコンテクストについてその動作を行うことを時間の経過と共に学習した場合に該当する。例えば、第1の事例では、着信音意思決定エンジンが規則401をまだ学習していない可能性があり、そのため午前8時に着信音量を調節しない可能性がある。後の第2の事例では、着信音量決定エンジンが規則401を学習しており、午前8時に着信音量を調節する可能性がある。同じように、意思決定エンジンの精度は継続的に改善され、最終的に、例えばユーザの振る舞いが変化するのに従って特定のコンテクスト値の場合は特定の動作を行わないことを学習することができる。
【0061】
<第2の方法の例>
図6は、アプリケーションを事前起動する状況に基づく動作を実施するために使用できる例示的な方法600を説明する図である。概念的には、方法600は方法500におけるブロック505の処理動作内容の具体例と見なすことができる。実装例によっては、方法600はモバイル機器110のアプリケーション事前起動動作231によって行うことができる。
【0062】
ブロック601において、事前起動するアプリケーションが特定される。例えば、このアプリケーションは、アプリケーション起動決定エンジン221によって特定することができる。上記の一例では、この決定を行って、ユーザが家族の一員であるボブとの電話を終えた直後の事例でソーシャル・ネットワーキング・アプリケーションを事前起動している。この例は、モバイル機器のユーザがソーシャル・ネットワーキング・アプリケーションの実行を要求する入力を提供する前にどのようにして動作が行われるかを説明するものであることに留意されたい。言い換えると、この決定が行われるのは、ユーザが電話の後比較的すぐにアプリケーションを要求する見込みが高いと意思決定エンジンが予想するようにするためである。
【0063】
実装によっては、意思決定エンジンは、ブロック601で、アプリケーションに1つまたは複数の構成パラメータを設定することもできる。例えば、構成パラメータを使用して、例えばある電子メールについては電子メール署名を「ボブ」にし、他の電子メールについては「ボビー」にするなど、ユーザが電子メールをやり取りする相手に応じて異なる署名を設定することができる。別の例として、ユーザがWi−Fiアクセス環境のある地理的場所(例えば自宅)にいる時にはソーシャル・ネットワーキング・アプリケーションを比較的高い帯域幅機能に対応するよう設定し、ユーザがセルラー網サービスしか利用できない地理的場所(例えば自家用車)にいる時には比較的低い帯域幅機能に対応するよう設定することができる。
【0064】
次に、ブロック602において、1つまたは複数の他のアプリケーションを退避させることができる。例えば、事前起動するアプリケーションが一定量のプロセッサおよび/またはメモリ資源を必要とする場合は、1つまたは複数の他のアプリケーションを終了して、事前起動対象のアプリケーションのために資源を解放することができる。具体的には、他のアプリケーションを終了することによってスレッドやプロセス等のプロセッサ資源を解放する、メモリを解放する、および/または他のアプリケーションのコードやデータをメモリから記憶装置に転送することができる。退避するアプリケーションを決めるためには各種の手法を使用することができ、例えば、現在実行されているアプリケーションの中で最も長い時間使用されていないもの、無作為に選択したアプリケーション、予測法、および/またはコストに基づく手法等がある。退避する(1つまたは複数の)アプリケーションは、記憶装置に移動する、メモリおよび/またはプロセッサ資源の割り当てを解放する等の「通常の」終了の振る舞いを用いることができる。
【0065】
実装例によっては、上記のような退避させる(1つまたは複数の)アプリケーションは、1つまたは複数のコンテクスタの値に応じて意思決定エンジンが選択してもよく、例えば意思決定エンジンは、事前起動すべき(1つまたは複数の)アプリケーションだけでなく、退避する(1つまたは複数の)アプリケーションもコンテクスタの値に基づいて学習することができる。そのような実装では、アプリケーション起動決定エンジンは、退避されたアプリケーションを示すコンテクスト値を時間の経過と共に追跡するように構成することもできる。したがって、アプリケーション起動決定エンジンは、各種アプリケーションが退避された以前の事例からのフィードバックに基づいて、他のコンテクスタの値を考慮して、退避するのに適したアプリケーションを学習することができる。
【0066】
次に、方法600は、ブロック603〜605の実行に進むことができる。一般に、ブロック603〜605の処理は、アプリケーションを事前起動して、アプリケーションを事前起動状態にすることに関連する。
【0067】
ブロック603において、事前起動するアプリケーションに資源を割り振ることができる。例えば、アプリケーションは、モバイル機器のオペレーティング・システムにメモリ資源を要求し、メモリ資源をアプリケーションに割り振ることができる。同様に、プロセッサ資源、例えば1つまたは複数のスレッドやプロセスをブロック603の一部としてアプリケーションに割り振ることができる。
【0068】
次に、ブロック604において、アプリケーション・コードおよび/またはデータをメモリにロードすることができる。例えば、実行可能なバイナリ・コードを含む1つまたは複数のアプリケーション・モジュールを記憶装置(例えばフラッシュやハード・ドライブなどの不揮発性メモリ)から取り出し、比較的高速の揮発性メモリ、例えばRAMにロードすることができる。例えば画像、映像、他の種類のデータ・ファイル等のアプリケーションで使用される各種データも記憶装置からメモリにロードすることができる。
【0069】
次に、ブロック605において、ロードされたアプリケーション・コードをモバイル機器の1つまたは複数のプロセッサで実行することができる。例えば、当該アプリケーション・コードを実行することで、ネットワークからデータ(写真、映像等)をダウンロードする、ユーザをウェブ・サービスにログインさせる等の各種の初期化ステップを行うことができる。ゲーム・アプリケーションの場合、ブロック605は、1つまたは複数の点数をダウンロードする、1つまたは複数のピアもしくはサーバー(例えばマルチユーザ・ゲーム)に接続する等を含むことができる。
【0070】
次に、ブロック606において、動作のフィードバックを受け取ることができる。実装例によっては、アプリケーションは、例えば肯定的なまたはマイナスのフィードバックを示す2進(ブール)値やより精緻な値(1〜10の整数の評価等)などのフィードバックを意思決定エンジンに提供するための明示的な呼び出しを行うことができる。他の実装例では、アプリケーションの明示的なフィードバックは使用されない。むしろ、意思決定エンジンは事前起動されたアプリケーションが事前起動から所定量の時間内に要求されるかどうかを監視することができる。例えば、意思決定エンジンは、事前起動から所定量の時間(例えば2分)以内にアプリケーションが使用されることを肯定的なフィードバックと見なし、その他の場合はフィードバックを否定と見なす。
【0071】
方法600は、事前起動するアプリケーションのコードに変更を加えずに実行できることに留意されたい。例えば、アプリケーション起動決定エンジンの出力をモバイル機器のオペレーティング・システムのスケジューラに供給することができる。スケジューラは、単に事前起動されたアプリケーションを実行し、アプリケーションを所定の時間量、例えば15秒間実行させる。その時間中に、アプリケーション・コードを単に通常通りに実行して、通例はユーザが明示的にアプリケーションを起動した後に行われる初期化ステップを行うことができる。所定量の時間が経過すると、オペレーティング・システムのスケジューラは、ユーザが明示的にアプリケーションの実行を要求するまではアプリケーションをそれ以上実行しないでおく。例えば、オペレーティング・システムは、アプリケーション(フェッチされたデータを含む)を退避せずに引き続きメモリに置いておくが、ユーザ要求が実際に受け取られるまでは、プロセッサにアプリケーションをスケジュールするのを停止することができる。多くの場合、この手法は、アプリケーション・コードの変更を必要とせず、アプリケーションまたはオペレーティング・システムのスケジューラにさらに変更を加えることなく、意思決定エンジンの決定を取り込むことによって実装することができる。
【0072】
他の実装例においては、アプリケーション・コードが、事前起動の目的に使用される明示的な呼び出しまたは「シンク(sync)動作」を提供することができる。そのような実装では、アプリケーションの設計者が、事前起動時にアプリケーションを実行するのに適した機能を決定することができる。そのような実装では、「通常の」起動手順の代わりにシンク動作が呼び出されるので、アプリケーションは自身が事前起動されていることに「気付く」。この実装例では、アプリケーション設計者が、事前起動の目的に適切な初期化機能を分けてシンク動作とすることができる。したがって、シンク動作を提供することにより、アプリケーション設計者は、事前起動段階で行われるアプリケーション機能と、ユーザがアプリケーションの実行を明示的に要求するまで実行を待つアプリケーション機能とをコントロールすることができる。
【0073】
<その他の例>
上記のコンテクスタ、動作、および意思決定エンジンは例示的なものであり、ここに開示される概念をどのようにして実施できるかの具体例を示すために提供した。ただし、ここに開示される実装と整合性のある多くの他の使用事例も企図される。一般に、追加的な機能は、異なる種類のコンテクスタ、動作、および意思決定エンジンを有効にすることによって提供することができる。
【0074】
例えば、特定のユーザの振る舞い、感情、活動等に関連するコンテクスタを提供することができる。実装によっては、ユーザが嬉しいか、怒っているか、悲しいか等を知らせることにより明示的に自分の気分を示すことができる。他の場合には、例えば声の調子や電子メール通信で使用される単語等からユーザの気分を推測することができる(気分の研究に関するさらなる詳細はhttp://affect.media.mit.edu/publications.phpで得ることができる)。そのような気分のコンテクスタが例えばユーザが悲しい気分であることを示す場合、着信音量決定エンジンは、悲しい時にはユーザは電話に出ないため、電話の着信音を消すことを学習することができる。別の例として、例えばユーザは比較的気分がよい時にソーシャル・ネットワーキング活動に参加する傾向があることから、アプリケーション起動決定エンジンは、ユーザが嬉しい気分であることを示す時にソーシャル・ネットワーキング・アプリケーションを起動することを学習することができる。
【0075】
上記のように、ユーザの場所もコンテクスタとして使用することができる。実装によっては、物理的な場所(例えばGPS座標)に関連付けられた種々の論理的な場所を定義することができる。論理的な場所を定義することにより、ユーザが職を変えたり、新しい家に引っ越したりしても、学習された機能が整合性を保ち続けることができる。例えば、ユーザが職を変え、新しい物理的な職場への通勤を始めると、ユーザは新しい物理的な場所を「仕事」の論理的な場所として定義することができる。したがって、以前にユーザの古い職場に関して学習された規則は、2つの異なる職場の特定の物理的場所ではなく、「仕事」の論理的な場所に関連付けられるため、機能し続けることができる。
【0076】
論理的な場所の別の例として、「飲食施設にいる」という一般的な概念を、ユーザのGPS座標がユーザがそのような施設にいることを示す時にはいつでも論理的な場所として使用することができる。したがって、ユーザが任意の種類のレストラン、カフェ、喫茶店等にいる時に頻繁にメールを書く習慣がある場合は、アプリケーション起動決定エンジンはテキスト・メッセージ・アプリケーションを開くことを学習することができる。したがって、「飲食施設」の論理的な場所を複数の場所と関連付け、ユーザがこれまでモバイル機器を持って訪れたことがない場所にも関連付けることができる。それに応じて、ユーザがこれまでその特定の場所でその動作を行ったことがなくとも、モバイル機器は、ユーザがいる場所の種類に基づいてメッセージ・アプリケーションを起動するなど、適切な動作をとることができる。むしろ、同様の場所におけるユーザの以前の動作に基づいて意思決定エンジンによって動作を推測することができる。
【0077】
コンテクスタの別の例は、種々の動きに関連する。例えば、ユーザは、歩いている時と車を運転している時とで異なる習慣を有する場合がある。具体例として、ユーザは運転中は音声認識ソフトウェアを使用して電子メールおよび/またはテキスト・メッセージを作成するが、歩行中はキーボードを使用して電子メールおよび/またはテキスト・メッセージを作成する傾向があるとする。実装例によっては、ユーザが歩いているか運転しているかをユーザの最近の運動、例えば相対速度等に基づいて判定することができる。したがって、動きのコンテクスタが、「歩行中」、「運転中」、「自転車に乗っている」、「静止状態」等のコンテクスト値を提供することができる。さらに他の実装例においては、動きのコンテクスタが加速度計を使用して、ユーザが踊っているか、または他のその場で行う活動を行っているかどうかを判定することができる。
【0078】
別の例として、コンテクスタは、モバイル機器の近くにいる人に関連することができる。例えば、ユーザが特定の友人や特定の家族等と一緒にいる場合、ユーザはモバイル機器を異なる形で使用する傾向がある場合がある。実装によっては、一緒にいる相手をユーザが明示的に特定する必要があるが、他の実装例においては、これは、例えばBluetooth(登録商標)等を介して他の人物のモバイル機器を認識することにより、モバイル機器によって自動的に判定することができる。子供と一緒にいる時には電話に一切出ない傾向があるが、特定の友人と一緒にいる時には常に電話に出るユーザを考えたい。そのような実装例においては、着信音量決定エンジンは、ユーザが子供と一緒にいる時には着信音量を下げるが、その特定の友人と一緒にいる時には音量を下げないようにすることを学習することができる。
【0079】
これも上述したように、コンテクスタは、モバイル機器上の1つまたは複数のアプリケーションから提供される情報を反映することができる。例えば、電子メール・アプリケーションが、ユーザが外出中で職場にいないことを知らせるメッセージを有効にした、またはユーザが現在会議中であることを示すカレンダーの予定を有することを示すコンテクスト値を提供することができる。さらに別の例として、コンテクスタは、ユーザが最近特定の人物に電子メールを送信したことや、特定の単語が電子メールの件名および/または本文で使用されたかどうかを示すことができる。例えば、ユーザが文字列「http://...」を含む電子メールを受信した場合、意思決定エンジンは、例えばユーザが電子メール中のハイパーリンクをクリックしてブラウザ・アプリケーションを起動した以前の事例に基づいてこの動作を学習した後には、ブラウザ・アプリケーションを起動することができる。
【0080】
実装例によっては、コンテクスタをモバイル機器によって1時間、1分、15分のブロック等の時間の「まとまり」に記録することができ、コンテクスト値を時間のまとまりごとの項目でコンテクスタ・ログに記録することができる。個々の意思決定エンジンは、時間のまとまりごとにアルゴリズムを更新することができる。実装例によっては、(1つまたは複数の)意思決定エンジンが対応する時間のまとまりを更新する相対的な頻度および/または時間のまとまりの大きさをユーザが設定できるようにすることができる。
【0081】
上記の各種動作(アプリケーションの事前起動、着信音量の調節、画面輝度の調節等)も例示的なものであり、他の種類の動作も企図される。実装例によっては、モバイル機器を自動的にオン/オフする、飛行機モードにする等が可能である。さらに他の実装では、個々の意思決定エンジンが試験的に機器動作を学習することができる。例えば、意思決定エンジンは、ユーザがこれまでに電子コンパスを照明したことがなくとも、ユーザのために電子コンパスを照明する等の新しい動作を試みることができる。そのような実装では、それにより、ユーザが知りもしなかった可能性のあるモバイル機器の機能について知るのを助けることができる。
【0082】
別の例として、一部の実装例は、バックグラウンド・サービスを特定の動作として抑制することができる。これには、ユーザが実行したいと思っている可能性のある他のアプリケーションのために演算資源(プロセッサ周期および/またはメモリ)を解放する効果がある。バックグラウンド抑制意思決定エンジンは、例えばユーザが仕事をしている時、特定の時刻、特定種類のファイル拡張子を持つ電子メールを受信した後等に、各種コンテクスト値がユーザが資源を多く要するアプリケーションを使用している可能性が高いことを示す時に、バックグラウンド・サービスを抑制することを学習することができる。
【0083】
<例示的なシステム>
図7はシステム700の一例を示す図である。例示的システム700は、それぞれノート型クライアント機器702(1)およびモバイル・クライアント機器702(2)として示す1つまたは複数のクライアント機器702を含む。この場合、(1つまたは複数の)クライアント機器702は各々、プロセッサ704、メモリ706、記憶装置708、状況に基づく動作モジュール111、コンテクスタ・ログ710、およびオペレーティング・システム712を含むことができる。(添え字「(1)」は、クライアント機器702(1)に存在するモジュール、添え字「(2)」は、クライアント機器702(2)に存在するモジュールを表す意で使用する)状況に基づく動作モジュール111は一般に、図1図6に関して上述した処理を行うように構成することができる。コンテクスタ・ログ710は、有効にされているコンテクスタについて時間の経過と共に記憶された各種のコンテクスト値、ならびに動作がユーザまたは意思決定エンジンによって行われた時に行われた特定の動作の指示を含むことができる。
【0084】
システム700は、1つまたは複数のサーバ714も含むことができる。(1つまたは複数の)サーバ714も、プロセッサ704(3)、メモリ706(3)、および記憶装置708(3)を含むコンピューティング・デバイスとすることができる。添え字(3)は、サーバ714のプロセッサまたは記憶装置の存在を表す意で使用することに留意されたい。サーバ714は状況に基づく動作モジュール111(3)も含み、上記で図1図6に関して述べた処理は、(1つまたは複数の)サーバ714の状況に基づく動作モジュール111(3)によって行うこともできる。特定の実装の1つでは、1つまたは複数の意思決定エンジンが(1つまたは複数の)サーバ714の状況に基づく動作モジュール111(3)によって実装され、動作自体は個々のクライアント機器で行われる。ある視点から見ると、この実装では、コンテクスト・マネジャ210および動作マネジャ230をクライアント機器に、マッピング・マネジャ220をサーバに分散することができる。
【0085】
(1つまたは複数の)クライアント機器702とサーバ714は、これに限定されないがインターネットなどの1つまたは複数のネットワーク716を介して通信することができる。状況に基づく動作モジュール111は、ソフトウェア、ハードウェア、および/またはファームウェアとして実装することができる。(1つまたは複数の)プロセッサ704は、コンピュータ可読命令コードの形態を有するデータを実行して機能を提供することができる。データおよび/またはコンピュータ可読命令コードはメモリ706および/または記憶装置708に記憶することができる。メモリおよび記憶装置は、とりわけ、揮発性もしくは不揮発性メモリ、ハード・ドライブ、および/または光学記憶装置(例えばCD、DVD等)、の1つまたは複数を含むことができる。
【0086】
実装によっては、メモリ706は記憶内容の保ち時間が比較的短い揮発性メモリであり、一方、記憶装置708は命令(コード)およびデータの長期間の記憶に使用される不揮発性メモリである。そのような実装例では、記憶装置708を使用して、コンピューティング・デバイスがパワーサイクルされ、コードおよび/またはデータの変更が揮発性メモリから失われる時にその変更を保持する。そのような実装例では、アプリケーションの事前起動は、上記で方法600のブロック604に関して説明したように、記憶装置708から一部またはすべてのアプリケーション・コードおよび/またはデータを取り出し、取り出したアプリケーション・コードまたはデータをメモリ706にロードすることを含むことができる。ユーザが特定のアプリケーションの実行を要求する前にそのようにすることで、アプリケーション・コードおよび/またはデータをユーザがアプリケーションの実行を要求した後に記憶装置から取り出す必要があった場合と比べて、アプリケーションはユーザによりよく反応するように見える。場合によっては、メモリ706は、記憶装置708に比べて読み出しおよび/または書き込みがかなり(例えば1桁またはそれ以上)「高速」または低待ち時間である場合もある。
【0087】
また、状況に基づく動作モジュール111はオペレーティング・システム712と対話する、またはその一部とすることができることに留意されたい。実装例によっては、オペレーティング・システム712は、プロセッサ704で実行する個々のアプリケーションをスケジュールするスケジューラ機能を提供する。実装例によっては、オペレーティング・システムのスケジューラが、例えば方法600のブロック603において、スレッドおよび/またはプロセスなどのプロセッサ資源をスケジュールされたアプリケーションに割り振る。
【0088】
(1つまたは複数の)クライアント機器702およびサーバ714は、外部の記憶装置718からコンピュータ可読命令の形態のデータを受け取るおよび/または生成するように構成することもできる。外部記憶装置718の例には、とりわけ、光学記憶装置(CD、DVD等)、ハード・ドライブ、およびフラッシュ記憶装置(例えばメモリ・スティックやメモリ・カード)がある。場合によっては、本明細書に記載されるモジュールを、組み立て時または少なくともユーザへの配送前にクライアント機器またはサーバにインストールすることができる。他の状況では、本明細書に記載のモジュールは、ネットワーク716を介して利用可能なダウンロード・モジュールとして、かつ/または外部記憶装置718から、配送後にユーザによってインストールすることができる。本明細書に記載のモジュールは、自立型アプリケーション、アプリケーションの部分、および/またはコンピューティング・デバイスのオペレーティング・システムの一部として顕在化することができる。
【0089】
総合して、本明細書に記載のモジュールは、上記で図1図6に関して説明した機能を実現することができる。具体的には、状況に基づく動作モジュール111は、方法500および/または600を行うように構成することができる。事例によっては、分散環境などで、クライアント機器またはサーバが複数のコンピューティング・デバイスまたはマシンからなることが可能であることに留意されたい。そのような構成では、方法500および/または600は、複数のコンピューティング・デバイスまたはマシンに分散された処理を使用して実施することができる。
【0090】
上記のように、一部の実装例においては、各種の意思決定エンジンをサーバー714で実行させる。そのような実装では、各クライアント機器がそれぞれローカルのコンテクスタ・ログ710(1)および710(2)を維持することができ、これらのログは、それぞれのクライアント機器の個々のコンテクスタについてのコンテクスト値の履歴、ならびに機器で行われた動作の履歴を含む。それらのコンテクスタ・ログをサーバー714にアップロードし、組み合わせてコンテクスタ・ログ710(3)とすることができる。
【0091】
そのような実装例においては、サーバーの意思決定エンジンは、複数のユーザについてのコンテクスタ・ログに関して学習を行うことができる。これは特に、個々のユーザのコンテクスタ・データが比較的少ない事例で有用である場合がある。そのような実装では、個々の意思決定エンジンは、複数のユーザに適用できる可能性のある規則を学習することができる。一例は上記の電子メールに埋め込まれたハイパーリンクの例であり、例えば、多くの異なるユーザが、文字列「http://...」を電子メール中のどこかに含む電子メールを受信した直後にブラウザ・アプリケーションを要求する可能性が高い。より一般的には、各意思決定エンジンは、他のユーザに対して他の機器で行われたコンテクスタ・ログおよび行われた動作から情報を取り出す(mine)ように構成することができる。したがって、意思決定エンジンは、他のユーザの状況と動作の関係から学習してユーザの体験を向上させることができる。実装によっては、他のユーザの機器の意思決定エンジンから得られる値を使用して意思決定エンジンをシード(seed)、初期化、またはその他の形で変更することさえできる。ただし、本明細書で述べる処理のすべて(意思決定エンジンの訓練を含む)は代わりに個々のクライアント機器でローカルに行い、そのクライアント機器またはユーザに固有のコンテクスタ・ログだけに基づいて意思決定エンジンを訓練してもよいことに留意されたい。
【0092】
本明細書で使用する用語「コンピュータ」、「クライアント機器」、「サーバ」、および「コンピューティング・デバイス」は、一定量の処理能力および/または記憶能力を有する任意種の機器を意味することができる。一般に、「モバイル機器」は、ユーザが自分で携行するのに適したフォーム・ファクタで具現化されたコンピューティング・デバイスを言う。処理能力は、コンピュータ可読命令コードの形態のデータを実行して機能を提供することが可能な1つまたは複数のプロセッサにより提供することができる。
【0093】
上記のように、コンピュータ可読命令は記憶装置および/またはメモリ装置に記憶することができる。記憶装置および/またはメモリ装置は、コンピューティング・デバイスの内部にあっても、かつ/または外部にあってもよい。記憶装置および/またはメモリ装置は、とりわけ、揮発性もしくは不揮発性メモリ、ハード・ドライブ、フラッシュ記憶装置、および/または光学記憶装置(例えばCD、DVD等)の1つまたは複数を含む。本明細書で使用する用語「コンピュータ可読媒体」は、一時的および非一時的なコンピュータ可読命令を含むことができる。それに対して、用語「コンピュータ可読記憶媒体」は一時的な事例を除外する。コンピュータ可読記憶媒体は「コンピュータ可読記憶装置」を含む。コンピュータ可読記憶装置の例には、とりわけ、RAMなどの揮発性記憶媒体、ハード・ドライブ、光ディスク、フラッシュ・メモリなどの不揮発性記憶媒体がある。
【0094】
コンピューティング・デバイスの例には、パーソナル・コンピュータ、携帯電話、スマートフォン、携帯情報端末などの従来のコンピューティング・デバイス、または常に進化するコンピューティング・デバイスもしくはまだ開発されていない多数の種類のコンピューティング・デバイスが含まれる。さらに、システム700の諸態様は1台のコンピューティング・デバイスで顕在化しても、複数のコンピューティング・デバイスに分散してもよい。
【0095】
<結び>
本発明に関し、例示的な方法を説明する順序は制限とは解釈すべきでなく、ここに記載されるブロックまたはステップのうち任意数を任意の順序で組み合わせて記載の方法または代替の方法を実施することができる。さらに、本発明に係る方法は、コンピューティング・デバイスが方法を実装できるように、適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせで実施することができる。一例においては、本発明に係る方法は、一連の命令として1つまたは複数のコンピュータ可読記憶媒体に記憶され、1つまたは複数のコンピューティング・デバイスによる実行で1つまたは複数のコンピューティング・デバイスに方法を行わせる。
【0096】
本明細書で説明する技術、方法、装置、システム等は、構造的特徴および/または方法論的動作に固有の術語で説明するが、特許請求の範囲に定義される主題は必ずしも記載の具体的な特徴や動作に制限されないことを理解されたい。むしろ、具体的な特徴や動作は、特許請求される方法、装置、システム等を実施する例示的形態として開示するものである。
図1
図2
図3A
図3B
図4A
図4B
図4C
図5
図6
図7