(57)【要約】  本発明は、入力ジェスチャーを認識するための方法、システム、およびコンピュータープログラム製品に及ぶ。ニューラルネットワークが、例示的な入力、および逆伝播を使用して、指定された入力パターンを認識するように訓練される。入力ジェスチャーデータは、１つまたは複数の軸を基準としたマルチタッチ入力ディスプレイ表面上の接触の経時的な動きを表す。指定された入力パターンを認識するようにニューラルネットワークを訓練するために使用される例示的な入力は、指定された入力パターンを表すことが知られている例示的な入力ジェスチャーに関する入力ジェスチャーデータをサンプリングすることから作成されることが可能である。その後、訓練されたニューラルネットワークを使用して、知られている入力ジェスチャーに類似する入力ジェスチャーが、それらの知られている入力ジェスチャーに対応する指定された入力パターンとして認識されることが可能である。【選択図】図２Ａ
2010532055.tif 000002
【特許請求の範囲】
【請求項１】
マルチタッチ入力ディスプレイ表面（２０２）を含むコンピューターシステム（２０１）において、前記マルチタッチ入力ディスプレイ表面（２０２）において入力された入力ジェスチャーデータ（２３１）を、対応する指定された入力パターン（２３２）として認識するように前記コンピューターシステム（２０１）を訓練するための方法であって、
指定された入力パターン（２３２）の少なくとも１つの例に関する入力ジェスチャーデータ（２３１）にアクセスする動作であって、前記入力ジェスチャーデータ（２３１）は、或る期間にわたる前記マルチタッチ入力ディスプレイ表面（２０２）上の検出された接触を表し、前記入力ジェスチャーデータ（２３１）は、前記指定された入力パターン（２３２）の前記少なくとも１つの例、すなわち、
前記期間にわたる第１の軸（２７１）を基準とする前記マルチタッチ入力ディスプレイ表面（２０２）上の検出された接触の位置を示す第１の方向動きデータ（２３６）と、
前記期間にわたる異なる第２の軸（２７２）を基準とする前記マルチタッチ入力ディスプレイ表面（２０２）上の検出された接触の位置を示す第２の方向動きデータ（２３８）とを含む動作と、
前記入力ジェスチャーデータ（２３１）を、前記第１の軸（２７１）上、または前記第２の軸（２７２）上のサンプルにそれぞれが対応する現実の値の入力ベクトル（２３９）に符号化する動作と、
前記入力ベクトル（２３９）に含まれる前記現実の値が、前記指定された入力パターン（２３２）の例を表すという指示を保存する動作と、
完全に接続されたニューラルネットワーク（２３４Ｕ）にアクセスする動作であって、前記ニューラルネットワーク（２３４Ｕ）は、入力ノード（２５５）、隠されたノード（２５２）、および出力ノード（２５３）を含み、前記入力ノードは、前記隠されたノードに完全に接続され、さらに前記隠されたノードは、前記出力ノードに完全に接続される動作と、
前記指定された入力パターン（２３２）を認識するよう前記ニューラルネットワーク（２３４Ｕ）を訓練するように前記ニューラルネットワークに供給される訓練セットを作成する動作であって、前記訓練セットは、前記入力ベクトル（２３９）と、対応する出力ベクトル（２８７）とを少なくとも含み、前記対応する出力ベクトル（２５５）は、前記指定された入力パターン（２３２）に対応すべき前記ニューラルネットワークの前記所望される出力を示す動作と、
逆伝播アルゴリズムを使用して、前記入力ベクトル（２３９）を受け取ったことに応答して、前記対応する出力ベクトル（２５５）に近似する出力ノード値を生成するように前記ニューラルネットワークを訓練することによって、前記指定された入力パターン（２３２）を認識するように前記ニューラルネットワーク（２３４Ｕ）を訓練する動作とを含む方法。
【請求項２】
指定された入力パターンの少なくとも１つの例に関する入力ジェスチャーデータに前記アクセスする動作は、前記指定された入力パターンの複数の例に関する入力ジェスチャーデータにアクセスする動作を含む請求項１に記載の方法。
【請求項３】
指定された入力パターンの少なくとも１つの例に関する入力ジェスチャーデータに前記アクセスする動作は、複数の異なる指定された入力パターンの各パターンの１つの例に関する入力ジェスチャーデータにアクセスする動作を含む請求項１に記載の方法。
【請求項４】
指定された入力パターンの少なくとも１つの例に関する入力ジェスチャーデータに前記アクセスする動作は、複数の異なる指定された入力パターンの各パターンの複数の例に関する入力ジェスチャーデータにアクセスする動作を含む請求項１に記載の方法。
【請求項５】
入力ジェスチャーデータに前記アクセスする動作は、マルチストロークの入力パターンに関する入力ジェスチャーデータにアクセスする動作を含む請求項１に記載の方法。
【請求項６】
前記入力ジェスチャーデータを現実の値の入力ベクトルに符号化することに先立って、前記入力ジェスチャーデータを作成する元となった入力ジェスチャーの回転を補償する動作をさらに含む請求項１に記載の方法。
【請求項７】
前記入力ジェスチャーデータは、第３の方向動きデータも含み、前記第３の方向動きデータは、前記期間にわたる任意のさらなる第３の軸に沿った動きを表す請求項１に記載の方法。
【請求項８】
前記入力ジェスチャーデータを現実の値の入力ベクトルに前記符号化する動作は、前記期間の始まりから前記期間の終わりまでの間の複数の指定された間隔で、前記第１の方向動きデータ、および前記第２の方向動きデータの各データの複数のサンプルを取り込む動作を含む請求項１に記載の方法。
【請求項９】
逆伝播アルゴリズムを使用して、前記指定された入力パターンを認識するように前記ニューラルネットワークを訓練する動作は、
前記ニューラルネットワークの対応する複数の入力ノードに前記複数のサンプルをサブミットする動作であって、前記ニューラルネットワークは、前記入力ノードから複数の隠されたノードに至る、割り当てられたランダムなリンク重みを有し、さらに前記ニューラルネットワークは、前記複数の隠されたノードから複数の出力ノードに至る、割り当てられたランダムなリンク重みを有する動作と、
前記入力ジェスチャーデータが、前記ニューラルネットワークに、少なくとも指定された閾値まで指定された出力ノードを活性化させることになることを前記ニューラルネットワークに示す動作であって、前記指定された出力ノードは、前記複数の出力ノードの中から、前記指定された記号に割り当てられる動作と、
前記ニューラルネットワークが、前記ランダムなリンク重みに基づいて前記複数のサンプルを処理して、前記複数の出力ノードの各ノードにおける値を活性化する動作と、
前記指定された出力ノードにおける前記活性化された値が、少なくとも前記指定された閾値ではないことを判定する動作と、
前記指定された出力ノードにおける前記活性化された値と、前記指定された閾値との差を示す誤差値を計算する動作と、
前記複数の出力ノードから前記ニューラルネットワークの内部に前記誤差値を逆方向に伝播させて、前記ニューラルネットワーク内のリンク重みを調整する動作であって、前記調整されたリンク重みは、前記複数のサンプルを後に処理する際に、前記ニューラルネットワークに、前記指定された出力ノードを前記指定された閾値により近づくように活性化させる動作とを含む請求項８に記載の方法。
【請求項１０】
前記複数の出力ノードから前記ニューラルネットワークの内部に前記誤差値を逆方向に伝播させる動作の後、
前記ニューラルネットワークの前記対応する複数の入力ノードに前記複数のサンプルを再サブミットする動作と、
前記ニューラルネットワークが、前記調整されたリンク重みに基づいて前記複数のサンプルを処理して、前記複数の出力ノードの各ノードにおいて第２の値を活性化する動作とをさらに含む請求項９に記載の方法。
【請求項１１】
さらなる誤差値を計算し、前記複数の出力ノードから前記ニューラルネットワークの内部に前記さらなる誤差値を逆方向に伝播させて、調整されたリンク重みが、少なくとも前記指定された閾値である指定された出力ノード値をもたらすまで、前記ニューラルネットワーク内のリンク重みをさらに調整し続ける動作と、
前記指定された出力ノード値が、少なくとも前記指定された閾値であることを検出すると、前記ニューラルネットワークが、前記指定された記号を認識するように訓練されていることを示す動作とをさらに含む請求項１０に記載の方法。
【請求項１２】
前記入力ベクトルに含まれる前記現実の値が、前記指定された入力パターンの例を表すという指示を前記保存する動作は、前記入力ベクトルに含まれる前記現実の値が、ユーザーによって定義された入力パターンの例を表すという指示を保存する動作を含む請求項１に記載の方法。
【請求項１３】
前記入力ベクトルに含まれる前記現実の値が、前記指定された入力パターンの例を表すという指示を前記保存する動作は、前記入力ベクトルに含まれる前記現実の値が、アルファベットにおける複数の入力パターンの中からの或る入力パターンの例を表すという指示を保存する動作を含む請求項１に記載の方法。
【請求項１４】
マルチタッチ入力ディスプレイ表面（２０２）を含むコンピューターシステム（２０１）において、前記マルチタッチ入力ディスプレイ表面（２０２）において入力された入力ジェスチャーデータ（２５６）を指定された記号（２３２）として認識するための方法であって、
或る期間にわたる前記マルチタッチ入力ディスプレイ表面（２０２）上の検出された接触を表す入力ジェスチャーデータ（２５８）にアクセスする動作であって、前記入力ジェスチャーデータ（２５８）は、
前記期間にわたる第１の軸を基準とする前記マルチタッチ入力ディスプレイ表面上の検出された接触の位置を示す第１の方向動きデータと、
前記期間にわたる異なる第２の軸を基準とする前記マルチタッチ入力ディスプレイ表面上の検出された接触の位置を示す第２の方向動きデータとを少なくとも含む動作と、
前記期間の始まりから前記期間の終わりまでの間の複数の指定された間隔で、前記第１の方向動きデータ、および前記第２の方向動きデータの各データの複数のサンプルを取り込む動作と、
ニューラルネットワーク（２３４Ｔ）の対応する複数の入力ノードに前記複数のサンプル（２６１）をサブミットする動作であって、前記ニューラルネットワーク（２３４Ｔ）は、前記入力ノード（２５１）から複数の隠されたノード（２５２）に至る、前もって訓練されたリンク重み（２４６Ｔ）を有し、さらに前記ニューラルネットワーク（２３４Ｔ）は、前記複数の隠されたノード（２５２）から複数の出力ノード（２５３）に至る、前もって訓練されたリンク重み（２４７Ｔ）を有し、各出力ノード（２５３）は、指定された記号に割り当てられ、それによって、出力ノードが或る指定された閾値に活性化されることが、前記ニューラルネットワーク（２３４Ｔ）が入力ジェスチャーデータ（２５６）を前記指定された記号（２３２）として認識することを示すようになる動作と、
前記ニューラルネットワーク（２３４Ｔ）が、前記前もって訓練されたリンク重みに基づいて、前記複数のサンプルを処理して、前記複数の出力ノード（２５３）の各ノードにおける値を活性化する動作と、
前記指定された記号（２３２）に割り当てられた前記指定された出力ノード（２５３）における前記活性化された値が、少なくとも前記指定された閾値であると判定する動作と、
前記指定された記号（２３２）が、前記入力ジェスチャーデータ（２５７）から認識されていることを示す動作とを含む方法。
【請求項１５】
前記複数のサンプルをとることに先立って、前記入力ジェスチャーデータを作成する元となった前記入力ジェスチャーの回転を補償する動作をさらに含む請求項１４に記載の方法。
【請求項１６】
ニューラルネットワークの対応する複数の入力ノードに前記複数のサンプルを前記サブミットする動作は、指定されたアルファベットの文字を認識するように訓練されたニューラルネットワークに前記複数のサンプルをサブミットする動作を含む請求項１４に記載の方法。
【請求項１７】
前記入力ジェスチャーデータは、第３の方向動きデータも含み、前記第３の方向動きデータは、前記期間にわたる第３の軸に沿った動きを表す請求項１４に記載の方法。
【請求項１８】
入力ジェスチャーデータに前記アクセスする動作は、マルチストロークの入力ジェスチャーに関する入力ジェスチャーデータにアクセスする動作を含む請求項１４に記載の方法。
【請求項１９】
前記マルチタッチ入力ディスプレイ表面上に前記指定された記号を提示する動作をさらに含む請求項１４に記載の方法。
【請求項２０】
マルチタッチ入力ディスプレイ表面（２０２）を含むコンピューターシステム（２０１）において使用されるための、前記マルチタッチ入力ディスプレイ表面（２０２）において入力された入力ジェスチャーデータ（２５７）を、対応する指定された入力パターン（２３２）として認識するように前記コンピューターシステム（２０１）を訓練するための方法を実施するためのコンピュータープログラム製品であって、
プロセッサーにおいて実行されると、前記コンピューターシステム（２０１）に、
指定された入力パターン（２３２）の少なくとも１つの例に関する入力ジェスチャーデータ（２３１）にアクセスする動作であって、前記入力ジェスチャーデータ（２３１）は、或る期間にわたる前記マルチタッチ入力ディスプレイ表面（２０２）上の検出された接触を表し、前記入力ジェスチャーデータ（２３１）は、前記指定された入力パターン（２３２）の前記少なくとも１つの例、すなわち、
前記期間にわたる第１の軸（２７１）を基準とする前記マルチタッチ入力ディスプレイ表面（２０２）上の検出された接触の位置を示す第１の方向動きデータ（２３６）と、
前記期間にわたる異なる第２の軸（２７２）を基準とする前記マルチタッチ入力ディスプレイ表面（２０２）上の検出された接触の位置を示す第２の方向動きデータ（２３８）とを含む動作と、
前記入力ジェスチャーデータ（２３１）を、前記第１の軸（２７１）上、または前記第２の軸（２７２）上のサンプルにそれぞれが対応する現実の値の入力ベクトル（２３９）に符号化する動作と、
前記入力ベクトル（２３９）に含まれる前記現実の値が、前記指定された入力パターン（２３２）の例を表すという指示を保存する動作と、
完全に接続されたニューラルネットワーク（２３４Ｕ）にアクセスする動作であって、前記ニューラルネットワーク（２３４Ｕ）は、入力ノード（２５５）、隠されたノード（２５２）、および出力ノード（２５３）を含み、前記入力ノードは、前記隠されたノードに完全に接続され、さらに前記隠されたノードは、前記出力ノードに完全に接続される動作と、
前記指定された入力パターン（２３２）を認識するよう前記ニューラルネットワーク（２３４Ｕ）を訓練するように前記ニューラルネットワークに供給される訓練セットを作成する動作であって、前記訓練セットは、前記入力ベクトル（２３９）と、対応する出力ベクトル（２８７）とを少なくとも含み、前記対応する出力ベクトル（２５５）は、前記指定された入力パターン（２３２）に対応すべき前記ニューラルネットワークの前記所望される出力を示す動作と、
逆伝播アルゴリズムを使用して、前記入力ベクトル（２３９）を受け取ったことに応答して、前記対応する出力ベクトル（２５５）に近似する出力ノード値を生成するように前記ニューラルネットワークを訓練することによって、前記指定された入力パターン（２３２）を認識するように前記ニューラルネットワーク（２３４Ｕ）を訓練する動作とを含む前記方法を実行させるコンピューター実行可能命令を格納している１つまたは複数のコンピューター可読媒体を含むコンピュータープログラム製品。
【発明の詳細な説明】
【背景技術】
【０００１】
（１．背景技術および関連技術）
コンピューターシステムおよび関連する技術は、社会の多くの側面に影響を与える。実際、情報を処理するコンピューターシステムの能力は、我々の暮らし方および働き方を変容させた。現在、コンピューターシステムは、コンピューターシステムの到来以前には、手作業で実行されていた多数のタスク（例えば、ワードプロセッシング、スケジューリング、経理など）を一般的に実行する。最近になって、コンピューターシステムは、互いに結合され、さらに他の電子デバイスに結合されて、コンピューターシステムおよびその他の電子デバイスが電子データを転送することができる有線コンピューターネットワークと無線コンピューターネットワークの両方を形成している。したがって、多くのコンピューティングタスクの実行は、いくつかの異なるコンピューターシステム、および／またはいくつかの異なるコンピューティングコンポーネントにわたって分散される。
【０００２】
多くの環境において、コンピューターシステムは、「ＣＰＵ」（中央処理装置）、システムメモリー（例えば、「ＲＡＭ」（ランダムアクセスメモリー）、何らかのタイプの大容量記憶デバイス（例えば、磁気ディスク）、入力デバイス、および出力デバイスを通常、含む。入力デバイスは、コンピューターシステムへのユーザー入力を受け入れ、そのユーザー入力をＣＰＵに中継するのに使用される。出力デバイスは、ＣＰＵ出力をユーザーに提示するのに使用される。このため、ユーザーは、通常、入力デバイスを使用してコンピューターシステムにデータを入力し、入力デバイスは、この入力データをＣＰＵに中継し、ＣＰＵは、この入力データを処理して、対応する出力データを生成し（例えば、システムプログラムまたはアプリケーションプログラムを介して）、ＣＰＵは、この出力データを出力デバイスに送り、出力デバイスは、この出力データを提示する。
【０００３】
入力デバイスと出力デバイスはともに、所望される機能を実施するハードウェア（物理的実体）とソフトウェア（例えば、デバイスドライバー、ユーザーインターフェースコントロール）の組み合わせを含むことが可能である。入力デバイスに特有のこととして、例えば、キーボード、マウス、ジョイスティックなどのハードウェアデバイスが、入力データを受けるのに使用される。これら、またはその他のハードウェアデバイスは、指定された入力機能を有するユーザーインターフェースコントロール（例えば、ボタン、メニューなど）を操作し、そのようなコントロールに移動するのに使用されることが可能である。例えば、ユーザーは、マウスを操作して、「印刷」ボタンの上にカーソルを移動させ、マウスボタンをクリックして文書が印刷されるようにすることができる。
【０００４】
最近になって、コンピューターディスプレイデバイスは、入力デバイスとビデオ出力デバイスの両方として機能するように構成されている。例えば、コンピューターディスプレイデバイスは、ディスプレイ表面を介した入力データの入力を円滑にするタッチ表面機構を有して構成されることが可能である。ディスプレイ表面に埋め込まれたセンサー（例えば、圧力センサー）が、物体（例えば、指）がディスプレイ表面上の或る特定の場所に接触すると、そのことを検出することができる。次に、コンピューターシステムが、この接触を検出したことに応答して、何らかのアクションを実行することができる。例えば、物体と、ユーザーインターフェースコントロールに対応する場所におけるディスプレイ表面との間の接触を検出したことに応答して、コンピューターシステムは、ユーザーインターフェースコントロールに関連する何らかのアクションを実行することができる。
【０００５】
したがって、入力デバイスは、ユーザーがコンピューターシステムを相手に意味のある対話をすることを有利に可能にする。多くの公共、および半公共の環境（例えば、図書館、レストラン、プライベートクラブ、航空会社の優待室など）において、コンピューターシステム（例えば、キオスク、テーブルトップコンピューターシステムなど）が、多数のユーザーの利用に供される。これらの環境内で、複数のユーザーが同一のコンピューターを同時に使用して、空間、コンピューターシステムリソースなどを節約することを許すことが、しばしば、望ましい。また、任意の同時のユーザーらが、一緒に共同作業する、または個々のユーザーニーズに基づいて別々に作業する、または一緒に共同作業するのを許すことも、しばしば、望ましい。例えば、複数のユーザーが、或るプレゼンテーションに一緒に共同で取り組むことを許すことが、望ましい可能性がある。他方、第１のユーザーがインターネットをブラウズするのを許す一方で、第２のユーザーが、ワードプロセッシング文書を編集するのを許すことが、望ましい可能性もある。
【０００６】
残念ながら、既存の入力デバイス技術は、同一のコンピューターシステムへのマルチユーザーアクセスを（共同で、または個々に）提供しようと試みる場合、少なくともいくつかの欠点を有する。ハードウェアデバイスに関して、１名のユーザー当たり少なくとも１つのデバイスが、通常、提供されなければならない。例えば、複数のユーザーが、異なるコンピューティングタスクを同時に実行するのに、各ユーザーが、別個のキーボード、および別個のマウスを必要とする可能性がある。このため、複数のコンピューターシステムが利用されなくとも、１つのコンピューターシステム当たり複数の入力デバイスセットを並置するのに十分な作業スペースが、通常、存在しなければならない。
【０００７】
ソフトウェアに関して、ユーザーインターフェースコントロールの各インスタンスが、ディスプレイ表面の一部分を消費する可能性がある。さらに、複数のユーザーインターフェースコントロールセットが、対応する複数のユーザーに同時のコンピューターアクセスを提供するように表示されなければならない。ディスプレイ表面の表示領域、提示されるユーザーインターフェースコントロールセットの数、およびサポートされるユーザーの数に依存して、既存の表示領域は、混み合い、有用性が限られる可能性がある。さらに、ユーザーインターフェースコントロール（例えば、ボタン）は、通常、単一の（すなわち「表を上にした」）向きを有する。このため、複数のユーザーが、共同作業している場合、ユーザーインターフェースコントロールは、複数のユーザーの１名にだけ正しく向いている。また、ユーザーインターフェースコントロールは、通常、大きい指のサイズに合わせて最適化されて、コントロールに、多くのユーザーに必要とされ得るより多くの表示領域を消費させている。
【０００８】
一部の環境において、入力データを受け取るのに、動きベースのジェスチャー認識が、タッチ表面と組み合わせで使用されることが可能である。コンピューターシステム内のソフトウェアモジュールが、タッチ表面上で行われた動きベースのジェスチャーを認識することができる。例えば、これらのソフトウェアモジュールは、ユーザーの指が、例えば、テキストの文字を描くようになど、弧を描く、輪郭を描くなどする際に、タッチ表面と常に接触しているユーザーの指を追跡することが可能である。ユーザーの指が、タッチ表面上でもはや検出されなくなると、ソフトウェアモジュールは、接触経路を処理して、例えば、文字「ａ」などの、対応する動きベースのジェスチャーを認識することが可能である。動きベースのジェスチャーは、所定の入力機能に対応することが可能である。このため、ソフトウェアモジュールが、或る動きベースのジェスチャーを検出すると、その動きベースのジェスチャーに応答して、対応する入力機能（例えば、文字を認識する）が、実行される。したがって、動きベースのジェスチャーは、少なくとも或る程度、ユーザーごとのハードウェア入力デバイスの必要性を緩和することができ、さらにユーザーごとのユーザーインターフェースコントロールセットのサイズを抑えることができる。
【０００９】
しかし、動きベースのジェスチャーの認識は、比較的複雑である。このことは、異なるユーザーが、異なる記号（または文字）をどのように描くことが可能であるかの違いに少なくとも或る程度、起因する。例えば、第１のユーザーと第２のユーザーがそれぞれ、文字「ａ」を描いた場合、文字「ａ」を描線は、様々な違いを有することが可能である。それらの違いは、余りにも大きくて、コンピューターシステムが、これらの描線のいずれか、または両方を、文字「ａ」に関する制御データと比較して文字「ａ」として認識しない可能性がある。したがって、複数のユーザーに関する動きベースのジェスチャー（例えば、記号または文字）を一様に認識しようと試みることは、困難であり得る。
【発明の概要】
【課題を解決するための手段】
【００１０】
本発明は、入力ジェスチャーを認識するための方法、システム、およびコンピュータープログラム製品に及ぶ。一部の実施形態では、コンピューターシステムが、対応する指定された入力パターン（例えば、テキストの文字）としてマルチタッチ入力ディスプレイ表面において入力された入力ジェスチャーデータを認識するように訓練される。コンピューターシステムは、指定された入力パターンの少なくとも１つの例に関する入力ジェスチャーデータにアクセスする。この入力ジェスチャーデータは、或る期間にわたるマルチタッチ入力ディスプレイ表面上の検出された接触を表す。この入力ジェスチャーデータは、第１の方向動きデータと、第２の方向動きデータとを含む。第１の方向動きデータは、その期間にわたる第１の軸（例えば、Ｘ軸）を基準としたマルチタッチ入力ディスプレイ表面上の検出された接触の位置を示す。第２の方向動きデータは、その期間にわたる異なる第２の軸（例えば、Ｙ軸）を基準としたマルチタッチ入力ディスプレイ表面上の検出された接触の位置を示す。
【００１１】
コンピューターシステムは、入力ジェスチャーデータを、現実の値の入力ベクトルに符号化する。それぞれの現実の値は、第１の軸上、または第２の軸上のサンプルに対応する。コンピューターシステムは、入力ベクトルに含まれる現実の値が、指定された入力パターンの例を表すという指示を保存する。
【００１２】
コンピューターシステムは、完全に接続されたニューラルネットワークにアクセスする。このニューラルネットワークは、入力ノード、隠されたノード、および出力ノードを含む。入力ノードは、隠されたノードに完全に接続され、隠されたノードは、出力ノードに完全に接続される。
【００１３】
コンピューターシステムは、指定された入力パターンを認識するようニューラルネットワークを訓練するようにニューラルネットワークに供給されるべき訓練セットを作成する。この訓練セットは、少なくとも、入力ベクトルと、対応する出力ベクトルとを含む。対応する出力ベクトルは、指定された入力パターンに対応すべきニューラルネットワークの所望される出力を示す。コンピューターシステムは、指定された入力パターンを認識するよう、逆伝播アルゴリズムを使用してニューラルネットワークを訓練する。ニューラルネットワークは、入力ベクトルを受け取ったことに応答して、対応する出力ベクトルに近似する出力ノード値を生成するようニューラルネットワークを訓練することによって、訓練される。
【００１４】
他の実施形態では、コンピューターシステムが、指定された記号としてマルチタッチ入力ディスプレイ表面において入力された入力ジェスチャーデータを認識する。コンピューターシステムは、或る期間にわたるマルチタッチ入力ディスプレイ表面上の検出された接触を表す入力ジェスチャーデータにアクセスする。入力ジェスチャーデータは、少なくとも、第１の方向動きデータと、第２の方向動きデータとを含む。第１の方向動きデータは、その期間にわたる第１の軸（例えば、Ｘ軸）を基準としたマルチタッチ入力ディスプレイ表面上の検出された接触の位置を示す。第２の方向動きデータは、その期間にわたる異なる第２の軸（例えば、Ｙ軸）を基準としたマルチタッチ入力ディスプレイ表面上の検出された接触の位置を示す。
【００１５】
コンピューターシステムは、その期間の始まりから、その期間の終わりまでの間の複数の指定された間隔で、第１の方向動きデータ、および第２の方向動きデータの各データの複数のサンプルを取り込む。コンピューターシステムは、これらの複数のサンプルを、前もって訓練されたニューラルネットワークの対応する複数の入力ノードにサブミットする。ニューラルネットワークは、入力ノードから複数の隠されたノードに至る、前もって訓練されたリンク重みを有し、さらに複数の隠されたノードから複数の出力ノードに至る、前もって訓練されたリンク重みを有する。各出力ノードは、指定された記号に割り当てられ、それによって出力ノードが或る指定された閾値に活性化されることが、ニューラルネットワークが入力ジェスチャーデータをその指定された記号として認識することを示すようになる。
【００１６】
ニューラルネットワークは、前もって訓練されたリンク重みに基づいて、これらの複数のサンプルを処理して、複数の出力ノードの各ノードにおける値を活性化する。コンピューターシステムは、指定された記号に割り当てられた、対応する出力ノードにおける活性化された値が、少なくとも、指定された閾値であると判定する。コンピューターシステムは、指定された記号が、入力ジェスチャーデータから認識されていることを示す。
【００１７】
この概要は、詳細な説明において後段でさらに説明される選定された概念を、簡略化された形態で概説するように与えられる。この概要は、特許請求される主題の重要な特徴、または不可欠な特徴を特定することは意図しておらず、また、特許請求される主題の範囲を確定する助けとして使用されることも意図していない。
【００１８】
本発明のさらなる特徴および利点は、以下の説明において示され、一部は、この説明から明白となり、あるいは本発明の実施によって知ることができる。本発明の特徴および利点は、添付の特許請求の範囲において特に指摘される手段および組み合わせを用いて実現され、得られることが可能である。本発明のこれら、およびその他の特徴は、以下の説明、および添付の特許請求の範囲から、より完全に明らかとなり、あるいは以降に説明される本発明の実施によって知ることができる。
【００１９】
本発明の前述、およびその他の利点および特徴が得られることが可能な様態を説明するため、上で簡単に説明された本発明のより詳細な説明が、添付の図面に示される本発明の特定の実施形態を参照して行われる。これらの図面は、本発明の通常の実施形態を示すに過ぎず、したがって、本発明の範囲を限定すると考えられるべきではないものと理解して、本発明を、添付の図面の使用を介して、さらに具体的に、さらに詳細に示し、説明する。
【図面の簡単な説明】
【００２０】
【図１】図１Ａは、訓練されていないニューラルネットワークの例を示す図である。図１Ｂは、対応する訓練されたニューラルネットワークの例を示す図である。
【図２Ａ】入力ジェスチャーを認識することを円滑にするコンピューターアーキテクチャーを示す図である。
【図２Ｂ】入力ジェスチャーデータ、対応する訓練入力ベクトル、および所望される出力ベクトルの例を示す図である。
【図２Ｃ】入力ジェスチャーを、指定された記号として認識するようにニューラルネットワークを訓練することの例を示す図である。
【図２Ｄ】入力ジェスチャーを認識することを円滑にするコンピューターアーキテクチャーを示す図である。
【図３】対応する入力ベクトルを作成するのに使用されることが可能なマルチストローク記号に関する入力ジェスチャーデータ、および結合されたグラフの例を示す図である。
【図４】指定された入力パターンを認識するようにコンピューターシステムを訓練するための例示的な方法を示す流れ図である。
【図５】指定された入力パターンを認識するための例示的な方法を示す流れ図である。
【発明を実施するための形態】
【００２１】
本発明は、入力ジェスチャーを認識するための方法、システム、およびコンピュータープログラム製品に及ぶ。一部の実施形態では、コンピューターシステムが、対応する指定された入力パターン（例えば、テキストの文字）としてマルチタッチ入力ディスプレイ表面において入力された入力ジェスチャーデータを認識するように訓練される。コンピューターシステムは、指定された入力パターンの少なくとも１つの例に関する入力ジェスチャーデータにアクセスする。この入力ジェスチャーデータは、或る期間にわたるマルチタッチ入力ディスプレイ表面上の検出された接触を表す。この入力ジェスチャーデータは、第１の方向動きデータと、第２の方向動きデータとを含む。第１の方向動きデータは、その期間にわたる第１の軸（例えば、Ｘ軸）を基準としたマルチタッチ入力ディスプレイ表面上の検出された接触の位置を示す。第２の方向動きデータは、その期間にわたる異なる第２の軸（例えば、Ｙ軸）を基準としたマルチタッチ入力ディスプレイ表面上の検出された接触の位置を示す。
【００２２】
コンピューターシステムは、入力ジェスチャーデータを、現実の値の入力ベクトルに符号化する。それぞれの現実の値は、第１の軸上、または第２の軸上のサンプルに対応する。コンピューターシステムは、入力ベクトルに含まれる現実の値が、指定された入力パターンの例を表すという指示を保存する。
【００２３】
コンピューターシステムは、完全に接続されたニューラルネットワークにアクセスする。このニューラルネットワークは、入力ノード、隠されたノード、および出力ノードを含む。入力ノードは、隠されたノードに完全に接続され、隠されたノードは、出力ノードに完全に接続される。
【００２４】
コンピューターシステムは、指定された入力パターンを認識するようニューラルネットワークを訓練するようにニューラルネットワークに供給されるべき訓練セットを作成する。この訓練セットは、少なくとも、入力ベクトルと、対応する出力ベクトルとを含む。対応する出力ベクトルは、指定された入力パターンに対応すべきニューラルネットワークの所望される出力を示す。コンピューターシステムは、指定された入力パターンを認識するよう、逆伝播アルゴリズムを使用してニューラルネットワークを訓練する。ニューラルネットワークは、入力ベクトルを受け取ったことに応答して、対応する出力ベクトルに近似する出力ノード値を生成するようニューラルネットワークを訓練することによって、訓練される。
【００２５】
他の実施形態では、コンピューターシステムが、指定された記号としてマルチタッチ入力ディスプレイ表面において入力された入力ジェスチャーデータを認識する。コンピューターシステムは、或る期間にわたるマルチタッチ入力ディスプレイ表面上の検出された接触を表す入力ジェスチャーデータにアクセスする。入力ジェスチャーデータは、少なくとも、第１の方向動きデータと、第２の方向動きデータとを含む。第１の方向動きデータは、その期間にわたる第１の軸（例えば、Ｘ軸）を基準としたマルチタッチ入力ディスプレイ表面上の検出された接触の位置を示す。第２の方向動きデータは、その期間にわたる異なる第２の軸（例えば、Ｙ軸）を基準としたマルチタッチ入力ディスプレイ表面上の検出された接触の位置を示す。
【００２６】
コンピューターシステムは、その期間の始まりから、その期間の終わりまでの間の複数の指定された間隔で、第１の方向動きデータ、および第２の方向動きデータの各データの複数のサンプルを取り込む。コンピューターシステムは、これらの複数のサンプルを、前もって訓練されたニューラルネットワークの対応する複数の入力ノードにサブミットする。ニューラルネットワークは、入力ノードから複数の隠されたノードに至る、前もって訓練されたリンク重みを有し、さらに複数の隠されたノードから複数の出力ノードに至る、前もって訓練されたリンク重みを有する。各出力ノードは、指定された記号に割り当てられ、それによって、出力ノードが或る指定された閾値に活性化されることが、ニューラルネットワークが入力ジェスチャーデータをその指定された記号として認識することを示すようになる。
【００２７】
ニューラルネットワークは、前もって訓練されたリンク重みに基づいて、これらの複数のサンプルを処理して、複数の出力ノードの各ノードにおける値を活性化する。コンピューターシステムは、指定された記号に割り当てられた、対応する出力ノードにおける活性化された値が、少なくとも、指定された閾値であると判定する。コンピューターシステムは、指定された記号が、入力ジェスチャーデータから認識されていることを示す。
【００２８】
本明細書、および添付の特許請求の範囲の中で、「逆伝播」は、ニューラルネットワークを訓練するために使用される学習技術として定義される。一般に、逆伝播は、フィードフォワードネットワーク（フィードバック接続、つまり、ループする接続を有さないネットワーク）を訓練するのに使用される。訓練サンプルは、ニューラルネットワークに供給される。訓練サンプルからもたらされた結果は、訓練サンプルに関する所望される出力と比較される。各ノードに関して、局所誤差が、計算される。局所誤差には、所望される出力を生成するのにノードの出力が、どのようでなければならなかったか、および所望される出力と合致するのに、ノードの出力がどれだけ高く、または低くなるべきかを示す倍率が含まれる。各ノードからのリンク重みは、局所誤差を小さくするように調整される。局所誤差に関する「責任」が、前のレベルにおけるノードに割り当てられて、より強い重みによって接続されたノードに責任が与えられる。これらのステップは、入力ノードに達するまでニューラルネットワークを逆方向に進んで作用して、各レベルで繰り返される。
【００２９】
このため、誤差（したがって、学習）は、出力ノードから内部ノードまで逆方向に伝播する。したがって、逆伝播は、ニューラルネットワークの変更可能な（リンク）重みに関して、ニューラルネットワークの誤差の傾斜を計算するのに使用される。逆伝播を使用して、所望される出力を生成するためのリンク重みが、所望される出力をニューラルネットワークに生成させるべき入力サンプルから反復されることが可能である。
【００３０】
本発明の実施形態は、後段でより詳細に説明されるとおり、コンピューターハードウェアを含む専用コンピューターまたは汎用コンピューターを含む、または利用することが可能である。また、本発明の範囲内の実施形態は、コンピューター実行可能命令および／またはデータ構造を伝送または格納するための物理的なコンピューター可読媒体およびその他のコンピューター可読媒体も含む。そのようなコンピューター可読媒体は、汎用コンピューターシステムまたは専用コンピューターシステムによってアクセスされることが可能な任意の利用可能な媒体であることが可能である。コンピューター実行可能命令を格納するコンピューター可読媒体は、物理的記憶媒体である。コンピューター実行可能命令を伝送するコンピューター可読媒体は、伝送媒体である。このため、例として、限定としてではなく、本発明の実施形態は、少なくとも２つの明確に異なる種類のコンピューター可読媒体、すなわち、物理的記憶媒体および伝送媒体を含むことが可能である。
【００３１】
物理的記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気記憶デバイス、あるいはコンピューター実行可能命令またはデータ構造の形態で所望されるプログラムコード手段を格納するのに使用されることが可能であり、さらに汎用コンピューターまたは専用コンピューターによってアクセスされることが可能な他の任意の媒体が含まれる。
【００３２】
「ネットワーク」は、コンピューターシステム、および／またはモジュール、および／または他の電子デバイスの間で電子データのトランスポートを可能にする１つまたは複数のデータリンクとして定義される。情報が、ネットワーク接続または別の通信接続（有線、無線、あるいは有線または無線の組み合わせ）を介してコンピューターに転送される、または供給される場合、コンピューターは、この接続を伝送媒体と適切に見なす。伝送媒体には、コンピューター実行可能命令またはデータ構造の形態で所望されるプログラムコード手段を伝送するのに使用されることが可能であり、さらに汎用コンピューターまたは専用コンピューターによってアクセスされることが可能なネットワークリンクおよび／またはデータリンクが含まれることが可能である。また、以上の媒体の組み合わせも、コンピューター可読媒体の範囲内に含められるべきである。
【００３３】
しかし、様々なコンピューターシステムコンポーネントに到達すると、コンピューター実行可能命令またはデータ構造の形態のプログラムコード手段は、伝送媒体から物理的記憶媒体に自動的に転送されることが可能であることを理解されたい。例えば、ネットワークリンクまたはデータリンクを介して受信されたコンピューター実行可能命令またはデータ構造が、ネットワークインターフェースカード内のＲＡＭの中にバッファーリングされることが可能であり、その後、最終的に、コンピューターシステムＲＡＭ、および／またはコンピューターシステムにおける、それほど揮発性ではない物理的記憶媒体に転送されることが可能である。このため、物理的記憶媒体が、伝送媒体をやはり利用する（または主に利用しさえする）コンピューターシステムコンポーネントに含まれることが可能であることを理解されたい。
【００３４】
コンピューター実行可能命令は、例えば、或る機能、または或るグループの機能を汎用コンピューター、専用コンピューター、または専用処理デバイスに実行させる命令およびデータを含む。コンピューター実行可能命令は、例えば、バイナリー、アセンブリー言語などの中間フォーマット命令、またはソースコードでさえあることが可能である。主題は、構造上の特徴および／または方法上の動作に特有の言い回しで説明されてきたが、添付の特許請求の範囲において規定される主題は、説明される特徴、または前述した動作に必ずしも限定されないことを理解されたい。むしろ、説明される特徴および動作は、特許請求の範囲を実施する例示的な形態として開示される。
【００３５】
本発明は、パーソナルコンピューター、デスクトップコンピューター、ラップトップコンピューター、メッセージプロセッサー、ハンドヘルドデバイス、マルチプロセッサーシステム、マイクロプロセッサーベースの家庭用電子機器またはプログラマブル家庭用電子機器、ネットワークＰＣ、ミニコンピューター、メインフレームコンピューター、移動電話機、ＰＤＡ、ポケットベルなどを含む多くのタイプのコンピューターシステム構成を有するネットワークコンピューティング環境において実施されることが可能であることが、当業者には認識されよう。また、本発明は、ネットワークを介して（有線データリンクによって、無線データリンクによって、あるいは有線データリンクと無線データリンクの組み合わせによって）リンクされたローカルコンピューターシステムとリモートコンピューターシステムがともにタスクを実行する、分散システム環境において実施されることも可能である。分散システム環境において、プログラムモジュールは、ローカルメモリー記憶デバイスとリモートメモリー記憶デバイスの両方の中に配置されることが可能である。
【００３６】
図１Ａは、訓練されていない逆伝播ニューラルネットワーク１０１Ｕの例を示す。訓練されていない逆伝播ニューラルネットワーク１０１Ｕは、入力ノード１０２、隠されたノード１０３、および出力ノード１０４を含む。訓練されていないリンク値１０６Ｕが、入力ノード１０２を隠されたノード１０３に完全に接続する（すなわち、各入力ノードが、すべての隠されたノードに接続される）。同様に、訓練されていないリンク値１０７Ｕが、隠されたノード１０３を出力ノード１０４に完全に接続する（すなわち、各隠されたノードが、すべての出力ノードに接続される）。訓練されていないリンク値１０６Ｕおよび１０７Ｕは、ランダムな値に初期設定されることが可能である。
【００３７】
例えば、訓練入力ベクトル１１１および１１２などの複数の入力訓練ベクトルが、訓練されていない逆伝播ニューラルネットワーク１０１Ｕに供給されることが可能である。また、所望される出力ベクトル１１３が、訓練入力ベクトルが生成すべき所望される出力であることが、示されることも可能である。入力訓練ベクトル１１１が、訓練されていないニューラルネットワーク１０１Ｕに入力として供給されることが可能である。訓練入力ベクトル１１１を受け取ったことに応答して、訓練されていないリンク値１０６Ｕおよび１０７Ｕが、逆伝播を介して改良されて、最終的に、これらのリンク値が、訓練入力ベクトル１１１に関する所望される出力ベクトル１１３（または出力ベクトル１１３の何らかの閾値の範囲内の値のセット）を生成するように訓練されることが可能である。
【００３８】
その後、訓練ベクトル１１２が、訓練されていないニューラルネットワーク１０１Ｕに入力されることが可能である。訓練入力ベクトル１１２を受け取ったことに応答して、訓練されていないリンク値１０６Ｕおよび１０７Ｕが、逆伝播を介してさらに改良されて、最終的に、これらのリンク値が、訓練入力ベクトル１１２に関する所望される出力ベクトル１１３（またはベクトル１１３の何らかの閾値の範囲内の値のセット）を生成するように訓練されることが可能である。
【００３９】
訓練の後、訓練入力ベクトル１１１、１１２などに類似する受け取られた任意の入力ベクトルが、ニューラルネットワーク１０１に、所望される出力ベクトル１１３に類似する出力ベクトル（例えば、ベクトル１１３の何らかの閾値の範囲内の値のセット）を出力させる。例えば、図１Ｂが、訓練されたニューラルネットワーク１０１Ｔを示す。訓練されたニューラルネットワーク１０１Ｔは、逆伝播を介して訓練された、訓練されたリンク値１０６Ｔ、および訓練されたリンク値１０７Ｔを含む。その後、入力ベクトル１２１が、訓練されたニューラルネットワーク１０１Ｔに入力として供給されることが可能である。訓練されたリンク値１０６Ｔ、および訓練されたリンク値１０７Ｔに基づいて、訓練されたニューラルネットワーク１０１Ｔは、出力ベクトル１２２を生成することができる。出力ベクトル１２２の範囲内の値は、所望される出力ベクトル１１３における値の指定された閾値の範囲内にあると判定されて、これら２つの出力ベクトルが、基本的に同一の出力として識別されるようになることが可能である。
【００４０】
このため、一般に、１つまたは複数の訓練入力、および所望される出力の使用を介して、ニューラルネットワークにおけるリンク値は、これらの訓練入力から、所望される出力を生成するように訓練されることが可能である。その後、訓練入力に類似する他の入力が、ニューラルネットワークに供給されると、ニューラルネットワークは、所望される出力に類似した出力を生成する。
【００４１】
図２Ａおよび図２Ｄは、仮想キーボードにおいてテキストをレプリケートすることを円滑にする例示的なコンピューターアーキテクチャー２００を示す。コンピューターアーキテクチャー２００において示されるのは、テーブルトップコンピューターシステム２０１である。テーブルトップコンピューターシステム２０１は、センサー２０３、センサーインターフェース２１３、訓練モジュール２３３、ベクトルジェネレーター２５９、認識モジュール２６６、およびグラフィカルサブシステム２６９を含む。一般に、センサー２０３、センサーインターフェース２１３、訓練モジュール２３３、ベクトルジェネレーター２５９、認識モジュール２６６、およびグラフィカルサブシステム２６９を含むコンピューターアーキテクチャー２００のコンポーネントは、入力ジェスチャーを認識するための様々な実施形態を実施するように相互動作する。
【００４２】
テーブルトップコンピューターシステム１０１は、例えば、「ＬＡＮ」（ローカルエリアネットワーク）、または「ＷＡＮ」（ワイドエリアネットワーク）、さらにはインターネットなどのネットワークに接続されることが可能である。このため、これらの様々なコンポーネントは、そのネットワークに接続された他のコンポーネントからデータを受信することができ、さらにそのような他のコンポーネントにデータを送信することができる。したがって、これらのコンポーネントは、メッセージ関連データを作成して、ネットワークを介してメッセージ関連データ（例えば、「ＩＰ」（インターネットプロトコル）データグラム、ならびに「ＴＣＰ」（伝送制御プロトコル）、「ＨＴＴＰ」（ハイパーテキスト転送プロトコル）、「ＳＭＴＰ」（簡易メール転送プロトコル）などの、ＩＰデータグラムを利用する、他のより高位の層のプロトコル）を交換することができる。
【００４３】
センサー２０３は、物理的な物体（例えば、びん、コップ、指、帽子など）が、マルチタッチ入力ディスプレイ表面２０２の一部分と物理的に接触した場合、そのことを検出するように構成されることが可能である。例えば、センサー２０３は、手２３７（または手２５７）の一部分が、マルチタッチ入力ディスプレイ表面２０２と接触すると、そのことを検出することができる。センサー２０３は、マルチタッチ入力ディスプレイ表面２０２に埋め込まれることが可能であり、さらにセンサーインターフェース２１３と相互動作して、同時の複数の入力を検出する、例えば、圧力センサー、温度センサー、イメージスキャナー、バーコードスキャナーなどを含むことが可能である。
【００４４】
一部の実施形態では、マルチタッチ入力ディスプレイ表面２０２は、タッチスクリーンインターフェースを実施するためのセンサーを含む。例えば、マルチタッチ入力ディスプレイ表面２０２は、対話型マルチタッチ表面を含むことが可能である。このため、マルチタッチ入力ディスプレイ表面２０２が、テーブルトップコンピューターシステム２０１のユーザーにビデオ出力データを表示するプレゼンテーション表面として機能することもあり得る。
【００４５】
センサー２０３は、マルチタッチ入力ディスプレイ表面２０２にわたる複数の場所に含められる（例えば、埋め込まれる）ことが可能である。センサー２０３は、マルチタッチ入力ディスプレイ表面２０２との物理的接触が生じた場所を検出することができる。センサー２０３の密度は、タッチ入力ディスプレイ表面２０２の全体にわたって接触が検出され得るように十分であることが可能である。
【００４６】
センサー２０３は、検出された接触に関して、例えば、１ミリ秒、５ミリ秒などの指定された間隔で、マルチタッチ入力ディスプレイ表面２０２の表面全体をサンプリングすることが可能である。各サンプリング間隔において、マルチタッチ入力表面２０２との任意の検出された接触の場所および／または領域を含め、サンプリング結果を示す生のセンサーデータが、センサーインターフェース２１３に送られる。このため、センサー２０３からのセンサー出力は、マルチタッチ入力ディスプレイ表面２０２上の複数の異なる場所および／または領域における接触を示す生のセンサー信号データであることが可能である。
【００４７】
センサーインターフェース２１３は、センサー２０３から生のセンサー信号データを受け取ることができ、この生のセンサー信号データを、テーブルトップコンピューターシステム２０１の他のモジュールによって互換性をもって処理され得る入力ジェスチャーデータ（例えば、デジタルデータ）に変換することができる。センサーインターフェース２１３、またはその他のモジュールは、必要に応じて、接触入力データをバッファーリングして、選択領域における経時変化を特定することができる。
【００４８】
例えば、センサー２０３からの生のセンサー信号データは、マルチタッチ入力表面２０２上で、新たな接触が検出された際、既存の接触が動かされた際、さらに既存の接触が離された際、変化する（例えば、サンプリング間隔の合間に）ことが可能である。このため、マルチタッチ入力ディスプレイ表面２０２上の接触の指示を受け取ると、センサーインターフェース２１３は、生のセンサー信号データのバッファーリング（例えば、テーブルトップコンピューターシステム２０１のシステムメモリーの中のバッファー内で）を開始することができる。マルチタッチ入力ディスプレイ表面２０２上の接触が変化するにつれ、センサーインターフェース２１３は、生のセンサー信号データの変化を追跡して、検出された接触の場所および順序をバッファー内で更新することができる。
【００４９】
例えば、センサーインターフェース２１３は、接触が、第１の場所で最初に検出され、次に、接触は、その後、他の場所に移されたことを特定することができる。接触が、マルチタッチ入力ディスプレイ表面２０２上のどこでも、もはや検出されないという指示を受け取ると、センサーインターフェース２１３は、バッファーの内容を入力ジェスチャーデータに変換することができる。その後、センサーインターフェース２１３は、この入力ジェスチャーデータを、テーブルトップコンピューターシステム２０１における他のモジュールに送る。
【００５０】
訓練モジュール２３３は、入力ジェスチャーデータ、および割り当てられた記号を受け取るように構成される。受け取られた入力ジェスチャーデータから、訓練モジュール２３３は、割り当てられた記号に対応する出力ベクトルを生成するようにニューラルネットワークを訓練するための訓練入力ベクトルを生成することができる。また、訓練モジュール２３３は、割り当てられた記号に出力ベクトルをマップする出力ベクトル／割り当てられた記号マッピングを保持することも可能である。一般に、訓練モジュール２３３は、例えば、数字、およびアルファベットの文字、さらにはユーザーによって生成された記号などの、任意の数の異なる記号を認識するようにニューラルネットワークを訓練することができる。
【００５１】
図４は、指定された入力パターンを認識するようにコンピューターシステムを訓練するための例示的な方法４００の流れ図を示す。図２Ｂは、入力ジェスチャーデータ、対応する訓練入力ベクトル、および所望される出力ベクトルの例を示す。図２Ｃは、入力ジェスチャーを、指定された記号として認識するようにニューラルネットワークを訓練することの例を示す。方法４００は、図２Ａ、図２Ｂ、および図２Ｃにおけるコンポーネントおよびデータに関連して説明される。
【００５２】
方法４００は、指定された入力パターンの少なくとも１つの例に関する入力ジェスチャーデータにアクセスする動作を含み、この入力ジェスチャーデータは、或る期間にわたるマルチタッチ入力ディスプレイ表面上の検出された接触を表す（動作４０１）。入力ジェスチャーデータは、指定された入力パターンの少なくとも１つの例に関する第１の方向動きデータと、第２の方向動きデータとを含む。第１の方向動きデータは、その期間にわたる第１の軸を基準としたマルチタッチ入力ディスプレイ表面上の検出された接触の位置を示す。第２の方向動きデータは、その期間にわたる異なる第２の軸を基準としたマルチタッチ入力ディスプレイ表面上の検出された接触の位置を示す。
【００５３】
例えば、手２３７の人差し指が、入力ジェスチャー２６７を入力するように入力領域２２１内でマルチタッチ入力ディスプレイ表面２０２に接触することがあり得る。センサー１０３が、ポイント２８１からポイント２８２まで接触（基本的に直線の）を追跡することが可能である。次に、センサー１０３は、ポイント２８２からポイント２８３まで接触（基本的に直線の）を追跡することが可能である。接触が、マルチタッチ表面２０２上のポイント間で動かされるにつれ、センサー２０３とセンサーインターフェース２１３が、Ｘ軸２７１とＹ軸２７２を基準とする代表的なセンサー信号データを追跡し、バッファーリングするように相互動作することが可能である。
【００５４】
ポイント２８３に到達した後、手２３７の人差し指は、マルチタッチ入力ディスプレイ表面２０２から離されることが可能である。したがって、センサー２０３は、マルチタッチ入力ディスプレイ表面２０２上の接触をもはや検出しない。これに応答して、センサーインターフェース２１３は、その代表的なセンサー信号データを入力ジェスチャーデータ２３１に変換することが可能である。入力ジェスチャーデータ２３１は、入力ジェスチャー２６７が入力されていた期間にわたる、検出された接触を表す。入力ジェスチャーデータ２３１は、Ｘ軸２７１およびＹ軸２７２を基準とした、その期間にわたる入力ジェスチャー２６７に関する検出された接触の位置を示す。ポイント２８１（接触の初期ポイント）が、原点として使用されることが可能である。
【００５５】
センサーインターフェース２１３は、入力ジェスチャーデータ２３１を訓練モジュール２３３に送ることが可能である。訓練モジュール２３３は、センサーインターフェース２１３から入力ジェスチャーデータ２３１を受け取ることが可能である。また、訓練モジュール２３３は、割り当てられた記号２３２を受け取ることも可能である。割り当てられた記号２３２は、ユーザーインターフェース（例えば、認識アプリケーションの）を介してテーブルトップコンピューターシステムコンピューターシステム２０１に入力されることが可能である。ユーザーは、入力ジェスチャー２６７（そのため、さらに入力ジェスチャーデータ２３１も）が、割り当てられた記号２３２の例を表すことを指定することができる。
【００５６】
方法４００は、入力ジェスチャーデータを現実の値の入力ベクトルに符号化する動作を含み、それぞれの現実の値は、第１の軸上、または第２の軸上のサンプルに対応する（動作４０２）。図２Ｂを参照すると、入力ジェスチャーデータ２３１のグラフ表示が、示されている。このグラフ表示に基づいて、訓練モジュール２３３は、第１次元グラフ２３６を計算することができる。第１次元グラフ２３６は、Ｘ軸２７１を基準とした入力ジェスチャー２６７の検出された接触の場所を経時的に示す。また、このグラフ表示に基づいて、訓練モジュール２３３は、第２次元グラフ２３８を計算することもできる。第２次元グラフ２３８は、Ｙ軸２７２を基準とした入力ジェスチャー２６７の検出された接触の場所を経時的に示す。
【００５７】
訓練モジュール２３３は、複数の指定された時点における第１次元グラフ２３６および第２次元グラフ２３８の各グラフの値をサンプリングすることができる。これらのサンプル値から、訓練モジュール２３３は、現実の値の訓練入力ベクトル２３９を符号化することができる。図２Ｂの例において、サンプルは、異なる８つの時点（入力ジェスチャー２６７を入力するのにかかる期間内の）にとられる。値Ｘ１ないしＸ８は、第１次元グラフ２３６からのサンプリングされた値を表し、さらに値Ｙ１ないしＹ８は、第２次元グラフ２３８からの対応するサンプリングされた値を表す。しかし、より少ない数のサンプリング時点が使用されることも、より多くの数のサンプリング時点が使用されることも可能である。組み合わされた数のサンプル（サンプリング時点の数に軸の数をかけた積）が、ニューラルネットワークの入力ノードの数に対応することが可能である。
【００５８】
方法４００は、入力ベクトルの中に含まれる現実の値が、指定された入力パターンの例を表すという指示を保存する動作（動作４０３）を含む。例えば、訓練モジュール２３３は、所望される出力ベクトル２５１に、割り当てられた記号２３２をマップし、さらに、このマッピングを出力ベクトル／割り当てられた記号マッピング２６２の中に格納することができる。次に、訓練モジュールは、訓練入力ベクトル２３９の現実の値をニューラルネットワークに入力として供給することが、ニューラルネットワークに、所望される出力ベクトル２５１を出力させることになるという指示を保存することができる。
【００５９】
方法４００は、完全に接続されたニューラルネットワークにアクセスする動作（動作４０４）を含む。ニューラルネットワークは、入力ノード、隠されたノード、および出力ノードを含み、入力ノードは、隠されたノードに完全に接続され、さらに隠されたノードは、出力ノードに完全に接続される。例えば、訓練モジュール２３３が、訓練されていないニューラルネットワーク２３４Ｕにアクセスすることが可能である。次に図２Ｃを参照すると、訓練されていないニューラルネットワーク２３４Ｕのより詳細な図が、示されている。訓練されていないリンク２４６Ｕが、入力ノード２５１を隠されたノード２５２に完全に接続し、さらに訓練されていないリンク２４７Ｕが、隠されたノード２５２を出力ノード２５３に完全に接続する。
【００６０】
方法４００は、指定された入力パターンを認識するようニューラルネットワークを訓練するためにニューラルネットワークに供給される訓練セットを作成する動作（動作４０５）を含む。この訓練セットは、少なくとも、入力ベクトルと、対応する出力ベクトルとを含み、対応する出力ベクトルは、指定された入力パターンに対応すべきニューラルネットワークの所望される出力を示す。例えば、訓練モジュール２３３が、割り当てられた記号２３２を認識するよう、訓練されていないニューラルネットワーク２３４Ｕを訓練するために、訓練されていないニューラルネットワーク２３４Ｕに供給される訓練セットを作成することが可能である。この訓練セットは、少なくとも、訓練入力ベクトル２３９と、所望される出力ベクトル２５１とに含むことが可能である。
【００６１】
方法４００は、入力ベクトルを受け取ったことに応答して、対応する出力ベクトルに近似する出力ノード値を生成するようニューラルネットワークを訓練することによって、指定された入力パターンを認識するよう、逆伝播アルゴリズムを使用してニューラルネットワークを訓練する動作（動作４０６）を含む。例えば、訓練モジュール２３３が、割り当てられた記号２３２を認識するよう、逆伝播アルゴリズムを使用して、訓練されていないニューラルネットワーク２３４Ｕを訓練することが可能である。訓練モジュール２３３は、所望される出力ベクトル２３９を、指定された閾値の範囲内にまで近似する値を、出力ノード２５３において生成するように、訓練されていないニューラルネットワーク２３４Ｕを訓練することによって、そのようにすることができる。
【００６２】
比較モジュール２４４が、実際の出力ベクトル２４１を、所望される出力ベクトル２４４と比較することができる。実際の出力ベクトル２４１の値が、所望される出力ベクトル２３９の値の指定された閾値の範囲内にない場合、比較モジュール２４４は、リンク調整値２４２（すなわち、誤差）を、訓練されていないニューラルネットワーク２３４Ｕにフィードバックすることができる。比較モジュール２４４は、実際の出力ベクトル２４１の値が、所望される出力ベクトル２３９の値の指定された閾値の範囲内に入るまで、リンク調整値２４２を、訓練されていないニューラルネットワーク２３４Ｕにフィードすることの１回、または複数回の反復を実行することができる。出力値が、閾値の範囲内に入ると、比較モジュール２４４は、訓練されていないニューラルネットワーク２３４Ｕが、入力ジェスチャーデータ２３１から、割り当てられた記号２３２を認識するように訓練されることを、訓練モジュール２３３に示すことができる。例えば、訓練されたニューラルネットワーク２３４Ｔは、所望される出力ベクトル２３９に関する値の指定された閾値の範囲内にある実際の出力ベクトル２３４に関する値を出力することができる。
【００６３】
異なる人々の間の筆跡の違いと同様に、異なるコンピューターユーザーが、同一の記号であることが意図されている多様な入力ジェスチャーを入力することも可能である。このため、一部の実施形態では、割り当てられた記号を表す複数の例示的な入力ジェスチャーが、利用される。例えば、「＾」記号であるように指定された、さらなる例示的な入力ジェスチャーが、訓練モジュール２３３に与えられることが可能である。
【００６４】
入力ジェスチャーデータは、それぞれの例示的な入力ジェスチャーに関して作成され、アクセスされることが可能である。各入力ジェスチャーデータから、対応する訓練入力ベクトルが、符号化されることが可能である。各訓練入力ベクトルが、ニューラルネットワークに、同一の所望される出力ベクトル（割り当てられた記号にマップされる）を出力させるべき訓練セットの中に含められることが可能である。このため、ニューラルネットワークは、異なる変種を有する様々な入力ジェスチャーを、同一の割り当てられた記号として認識するように訓練されることが可能である。複数の入力ベクトルを使用することは、訓練されたニューラルネットワークが、その後に入力された入力ジェスチャーを、割り当てられた記号として適切に識別する可能性を高める。
【００６５】
さらに、本発明の実施形態は、複数の異なる割り当てられた記号を認識するようにニューラルネットワークを訓練することも含む。例えば、ニューラルネットワークは、アルファベット（例えば、ラテン文字、キリル文字、アラビア文字、ブラフミー文字から派生した文字、ヘブライ文字、ハングル文字など）の各文字、あるいはコミュニケーションのために使用されることが可能な他の記号セット（例えば、中国語の表語文字、または日本語の音節文字）におけるそれぞれの異なる記号を認識するように訓練されることが可能である。また、ニューラルネットワークは、記数法（例えば、アラビア記数法から派生した記数法、ローマ数字の記数法、中国の記数法、日本の記数法、韓国の記数法など）における各数字を認識するように訓練されることも可能である。また、ニューラルネットワークは、文字（すなわち表語文字、音節文字など）および数字を含む記号の様々な組み合わせを認識するように訓練されることも可能である。例えば、ニューラルネットワークは、指定された文字セット（例えば、Ｕｎｉｃｏｄｅ、ＡＳＣＩＩ、ＥＢＣＤＩＣ、ＩＳＯ−８８５９文字セット、ＡＮＳＩ、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）文字セット、Ｓｈｉｆｔ  ＪＩＳ、ＥＵＣ−ＫＲなど）におけるすべての記号を認識するように訓練されることが可能である。
【００６６】
したがって、アルファベットの各記号、記数法、文字セットなど、あるいは以上の組み合わせを表す入力ジェスチャーの１つまたは複数の例が、利用されることが可能である。例えば、ラテン文字（例えば、ａ、ｂ、ｃ、ｄなど）における各記号（文字）に関して指定された複数の入力ジェスチャーが、訓練モジュール２３３に供給されることが可能である。それぞれの割り当てられた記号に関して、その割り当てられた記号を表すそれぞれの例示的な入力ジェスチャーに関する入力ジェスチャーデータが、作成され、アクセスされることが可能である。割り当てられた記号に関する各入力ジェスチャーデータから、対応する訓練入力ベクトルが、符号化されることが可能である。割り当てられた記号に関する各訓練入力ベクトルは、同一の所望される出力ベクトル（その割り当てられた記号にマップされる）に関連付けられることが可能である。
【００６７】
このため、複数の訓練入力ベクトルと、対応する所望される出力ベクトルとを含む１つまたは複数のセット（それぞれの割り当てられた記号に関するセット）が、作成されることが可能である。この１つまたは複数のセットのそれぞれが、ニューラルネットワークに、適切な所望される出力ベクトル（適切な割り当てられた記号にマップされる）を出力させるべき訓練セットの中に含められることが可能である。このため、ニューラルネットワークは、コンピューターユーザーが、記号のそれぞれを表すことが意図されている多様な入力ジェスチャーを入力する可能性があっても、記号のセットにおける各記号を認識するように訓練されることが可能である。
【００６８】
また、ニューラルネットワークは、ユーザーによって定義された記号を認識するように訓練されることも可能である。
【００６９】
したがって、本発明の実施形態は、マルチストロークの記号を認識するようにニューラルネットワークを訓練することを含む。次に図３を参照すると、図３は、「ｘ」に関する入力ジェスチャーデータのグラフ表示を示している。ストローク３０１が、ポイント３５１とポイント３５２の間で接触が検出されたことを表す。その後、接触のない期間が、検出された。
【００７０】
ストローク３０１に関して、訓練モジュール２３３が、第１次元グラフ３０３を計算することが可能である。第１次元グラフ３０３は、Ｘ軸２７１を基準とした、対応する入力ジェスチャーの検出された接触の場所を経時的に示す。また、このグラフ表示に基づいて、訓練モジュール２３３は、第２次元グラフ３０４を計算することもできる。第２次元グラフ３０４は、Ｙ軸２７２を基準とした、対応する入力ジェスチャーの検出された接触の場所を経時的に示す。
【００７１】
接触のない期間の後、ストローク３０２が、ポイント３５３とポイント３５４の間で接触が検出されたことを表す。ストローク３０２に関して、訓練モジュール２３３が、第１次元グラフ３０６を計算することが可能である。第１次元グラフ３０６は、Ｘ軸２７１を基準とした、対応する入力ジェスチャーの検出された接触の場所を経時的に示す。また、このグラフ表示に基づいて、訓練モジュール２３３は、第２次元グラフ３０７を計算することもできる。第２次元グラフ３０７は、Ｙ軸２７２を基準とした、対応する入力ジェスチャーの検出された接触の場所を経時的に示す。
【００７２】
その後、対応する入力ジェスチャーが完了したことを示す、接触のない第２の（場合により、より長い）期間が、検出されることが可能である。これに応答して、訓練モジュール２３３は、第１次元グラフ３０３と第１次元グラフ３０６を組み合わせて、複合第１次元グラフ３０８にすることができる。複合第１次元グラフ３０８は、Ｘ軸２７１を基準とした、対応する入力ジェスチャーに関する総合の接触を表す。同様に、訓練モジュール２３３は、第２次元グラフ３０４と第２次元グラフ３０７を組み合わせて、複合第２次元グラフ３０９にすることができる。複合第２次元グラフ３０９は、Ｙ軸を基準とした、対応する入力ジェスチャーに関する総合の接触を表す。
【００７３】
さらなるストロークが、含められる（例えば、東アジアの文字）場合、ストロークごとに、さらなる個々のグラフが作成されることが可能である。任意の数の個々のグラフ（例えば、ストローク当たり１つの）が、軸ごとに組み合わされることが可能である。したがって、入力ジェスチャーに関する総合の接触データ（各軸を基準とした）は、対応する入力ジェスチャーが、マルチタッチ入力ディスプレイ２０２との連続的な接触を含まない場合でさえ、グラフ化されることが可能である。
【００７４】
次に、訓練モジュール２３３が、複数の指定された時点における複合第１次元グラフ３０８および複合第２次元グラフ３０９の各グラフの値をサンプリングすることができる。これらのサンプル値から、訓練モジュール２３３は、現実の値の訓練入力ベクトル２３９を符号化することができる。次に、訓練モジュールは、訓練入力ベクトルの現実の値をニューラルネットワークに入力として供給することが、ニューラルネットワークに、文字「ｘ」に対応する所望される出力ベクトルを出力させることになるという指示を保存することができる。次に、訓練モジュール２３３は、この入力ベクトル、およびこの所望される出力ベクトルをニューラルネットワークに供給することができる。逆伝播アルゴリズムを使用して、ニューラルネットワークは、訓練入力ベクトルから、所望される出力ベクトル（したがって、さらに文字「ｘ」）を認識するように訓練されることが可能である。
【００７５】
複数のストロークが、互いに空間的に近接して入力される、または交差する（例えば、「ｘ」またはｅチルダ）場合、これらのストロークが同一の入力ジェスチャーに対応する可能性は、より高い。他方、複数のストロークが、互いに空間的に近接して入力されない（例えば、「／」の後に「＼」が続く、または「ｅ」の後に「〜」が続く）場合、これらのストロークが同一の入力ジェスチャーに対応する可能性は、より低い。ストローク間の必須の近接距離を使用して、２つ以上のストローク間の空間的関係の十分性が判定されることが可能であり、したがって、この２つ以上のストロークが、同一の入力ジェスチャーに対応するかどうかが判定されることが可能である。この必須の近接距離は、例えば、マルチタッチ入力ディスプレイ表面２０２上のセンチメートル、ミリメートル、ピクセルなどの何らかの数値であることが可能である。
【００７６】
一般に、訓練モジュール２３３またはベクトルジェネレーター２５９は、複数のストローク間の十分な空間的関係を検証してから、それらの複数のストロークが、同一の入力ジェスチャーに対応すると判定することが可能である。例えば、２つのストロークが、或る必須の近接距離以下の距離によって隔てられている場合、訓練モジュール２３３またはベクトルジェネレーター２５９は、その２つのストロークが、同一の入力ジェスチャーに対応すると判定することが可能である。他方、２つのストロークが、この必須の近接距離より大きい距離によって隔てられている場合、訓練モジュール２３３またはベクトルジェネレーター２５９は、その２つのストロークが、同一の入力ジェスチャーには対応しないと判定する。
【００７７】
一部の実施形態では、境界ボックスを使用して、２つ以上のストローク間の空間的関係の十分性が判定される。指定された寸法の境界ボックスが、複数のストロークのそれぞれを囲んで位置付けられる。異なるストロークに対応する境界ボックスが交差する場合、訓練モジュール２３３またはベクトルジェネレーター２５９は、その２つのストロークが、同一の入力ジェスチャーに対応すると判定することができる。他方、異なるストロークに対応する境界ボックスが交差しない場合、訓練モジュール２３３またはベクトルジェネレーター２５９は、その２つのストロークが、同一の入力ジェスチャーには対応しないと判定することができる。
【００７８】
代替として、境界ボックスが、必須の近接距離と組み合わせで使用されて、２つ以上のストローク間の空間的関係の十分性が判定されることも可能である。異なるストロークに対応する境界ボックスが、或る必須の近接距離以下の距離によって隔てられている場合、訓練モジュール２３３またはベクトルジェネレーター２５９は、その２つのストロークが、同一の入力ジェスチャーに対応すると判定することができる。他方、異なるストロークに対応する境界ボックスが、この必須の近接距離より大きい距離によって隔てられている場合、訓練モジュール２３３またはベクトルジェネレーター２５９は、その２つのストロークが、同一の入力ジェスチャーには対応しないと判定する。
【００７９】
空間的近接性の使用は、複数のユーザーが、マルチタッチ入力ディスプレイ表面２０２を同時に利用して、互いに干渉することなしに、記号の認識のために訓練するように、さらに記号を認識するように入力ジェスチャーを入力することを許す。
【００８０】
同様に、複数のストロークが、互いに時間的に近接して入力される場合、これらのストロークが同一の入力ジェスチャーに対応する可能性は、より高い。他方、複数のストロークが、互いに時間的に近接して入力されない場合、これらのストロークが同一の入力ジェスチャーに対応する可能性は、より低い。ストローク間の必須の時間間隔を使用して、複数のストロークが、同一の入力ジェスチャーに対応するかどうかが判定されることが可能である。この必須の時間間隔は、例えば、５０ミリ秒から１０００ミリ秒までの範囲内などの、何らかのミリ秒数であることが可能である。一部の実施形態では、４００ミリ秒が、この必須の時間間隔として使用される。
【００８１】
一般に、訓練モジュール２３３またはベクトルジェネレーター２５９は、複数のストローク間の十分な時間的関係を検証してから、それらの複数のストロークが、同一の入力ジェスチャーに対応すると判定することが可能である。例えば、第１のストロークの入力と第２のストロークの入力の間の時間間隔が、この必須の時間間隔以下である場合、訓練モジュール２３３またはベクトルジェネレーター２５９は、第１のストロークと第２のストロークが、同一の入力ジェスチャーに対応すると判定することが可能である。他方、第１のストロークの入力と第２のストロークの入力の間の時間間隔が、この必須の時間間隔以上である場合、訓練モジュール２３３またはベクトルジェネレーター２５９は、第１のストロークと第２のストロークが、同一の入力ジェスチャーには対応しないと判定する。
【００８２】
ニューラルネットワークを訓練した後、ニューラルネットワークは、入力ジェスチャーを、対応する割り当てられた記号として認識するのに使用されることが可能である。次に図２Ｄを参照すると、ベクトルジェネレーター２５９が、入力ジェスチャーデータを受け取ることから入力ベクトルを生成するように構成されることが可能である。ベクトルジェネレーター２５９は、訓練モジュール２３３と同じような仕方で入力ベクトルを生成することができる（さらに、モジュール２３３のサブコンポーネントであることが可能である）。例えば、ベクトルジェネレーター２５９は、Ｘ軸２７１とＹ軸２７２を基準とする接触をグラフ化することができる。次に、ベクトルジェネレーターは、入力ジェスチャーが入力された期間にわたる複数の時間間隔でグラフのサンプルをとることができる。
【００８３】
訓練されたニューラルネットワーク２３４Ｔが、入力ベクトルを受け取り、対応する出力ベクトルを生成するように制限される。認識モジュール２６６が、出力ベクトルを受け取り、出力ベクトル／割り当てられた記号マッピング２６２を参照して、適切な割り当てられた記号を識別するように構成される。認識モジュール２６６は、マルチタッチ入力ディスプレイ表面２０２上で提示するために、その割り当てられた記号をグラフィカルサブシステム２６９に送ることができる。
【００８４】
図５は、指定された入力パターンを認識するための例示的な方法５００の流れ図を示す。方法５００は、図２Ｃおよび図２Ｄにおけるコンポーネントおよびデータに関連して説明される。
【００８５】
方法５００は、或る期間にわたるマルチタッチ入力ディスプレイ表面上の検出された接触を表す入力ジェスチャーデータにアクセスする動作（動作５０１）を含む。この入力ジェスチャーデータは、第１の方向動きデータと、第２の方向動きデータとを含む。第１の方向動きデータは、その期間にわたる第１の軸を基準としたマルチタッチ入力ディスプレイ表面上の検出された接触の位置を示す。第２の方向動きデータは、その期間にわたる異なる第２の軸を基準としたマルチタッチ入力ディスプレイ表面上の検出された接触の位置を示す。
【００８６】
例えば、手２５７の人差し指が、入力ジェスチャー２５６を入力するように入力領域２２１内でマルチタッチ入力ディスプレイ表面２０２に接触することがあり得る。センサー１０３が、ポイント２８４からポイント２８５まで接触（基本的に直線の）を追跡することが可能である。次に、センサー１０３は、ポイント２８５からポイント２８６まで接触（基本的に直線の）を追跡することが可能である。接触が、マルチタッチ表面２０２上のポイント間で動かされるにつれ、センサー２０３とセンサーインターフェース２１３が、Ｘ軸２７１とＹ軸２７２を基準とする代表的なセンサー信号データを追跡し、バッファーリングするように相互動作することが可能である。
【００８７】
ポイント２８６に到達した後、手２５７の人差し指は、マルチタッチ入力ディスプレイ表面２０２から離されることが可能である。したがって、センサー２０３は、マルチタッチ入力ディスプレイ表面２０２上の接触をもはや検出しない。これに応答して、センサーインターフェース２１３は、その代表的なセンサー信号データを入力ジェスチャーデータ２５８に変換することが可能である。入力ジェスチャーデータ２５８は、入力ジェスチャー２５６が入力されていた期間にわたる、検出された接触を表す。入力ジェスチャーデータ２５８は、Ｘ軸２７１およびＹ軸２７２を基準とした、その期間にわたる入力ジェスチャー２５６に関する検出された接触の位置を示す。ポイント２８４（接触の初期ポイント）が、原点として使用されることが可能である。
【００８８】
センサーインターフェース２１３は、入力ジェスチャーデータ２５８をベクトルジェネレーター２５９に送ることが可能である。ベクトルジェネレーター２５９は、センサーインターフェース２１３から入力ジェスチャーデータ２５８を受け取ることが可能である。
【００８９】
方法５００は、その期間の始まりから、その期間の終わりまでの間の複数の指定された間隔で、第１の方向動きデータ、および第２の方向動きデータの各データの複数のサンプルを取り込む動作（動作５０２）を含む。例えば、ベクトルジェネレーター２５９が、Ｘ軸２７１を基準とした経時的な動きに関する次元グラフ、およびＹ軸２７２を基準とした経時的な動きに関する次元グラフを作成することが可能である。ベクトルジェネレーター２５９は、複数の指定された時点における次元グラフの各グラフの値をサンプリングすることができる。これらのサンプル値から、ベクトルジェネレーター２５９は、現実の値の入力ベクトル２６１を符号化することができる。ベクトルジェネレーター２５９は、訓練モジュール２３３と同様に（例えば、同一の数のサンプルをとるとともに、同一の時間間隔でサンプルをとって）、受け取られた入力ジェスチャーデータをサンプリングすることができる。このため、ベクトルジェネレーター２０９によって生成される入力ベクトルは、訓練モジュール２２３によって訓練されたニューラルネットワークにおいて互換性をもって受け取られる。
【００９０】
方法５００は、ニューラルネットワークの対応する複数の入力ノードに、これら複数のサンプルをサブミットする動作（動作５０３）を含む。ニューラルネットワークは、入力ノードから複数の隠されたノードに至る、前もって訓練されたリンク重みを有し、さらに複数の隠されたノードから複数の出力ノードに至る、前もって訓練されたリンク重みを有する。各出力ノードは、指定された記号に割り当てられ、それによって、出力ノードが或る指定された閾値に活性化されることが、ニューラルネットワークが入力ジェスチャーデータをその指定された記号として認識することを示すようになる。
【００９１】
例えば、ベクトルジェネレーター２５９が、訓練されたニューラルネットワーク２３４Ｔに入力ベクトル２６１をサブミットすることが可能である。訓練モジュール２３３が、入力ノード２５１と隠されたノード２５２の間のリンク重みを前もって訓練しており、さらに隠されたノード２５２と出力ノード２５３の間のリンク重みを前もって訓練している。出力ノード２５３のそれぞれが、指定された記号に割り当てられる。このため、出力ノード２５３の１つが、或る指定された閾値の範囲内まで活性化されると、その入力ジェスチャーデータ２５８は、割り当てられた記号２３２として認識される。
【００９２】
方法５００は、前もって訓練されたリンク重みに基づいて、ニューラルネットワークがこれらの複数のサンプルを処理して、複数の出力ノードの各ノードにおける値を活性化する動作（動作５０４）を含む。例えば、訓練されたニューラルネットワーク２３４Ｔは、訓練されたリンク値２４６Ｔおよび２４７Ｔに基づいて入力ベクトル２６１を処理して、出力ノード２５３の各ノードにおける値を活性化することが可能である（したがって、出力ベクトル２６４がもたらされる）。方法５００は、指定された記号に割り当てられた指定された出力ノードにおける活性化された値が、少なくとも、指定された閾値であることを判定する動作（動作５０５）を含む。例えば、認識モジュールが、出力ベクトル２６４を、出力ベクトル／割り当てられた記号マッピング２６２における１つまたは複数の所望される出力ベクトルと比較することが可能である。出力ベクトル２６４における活性化された値が、所望される出力ベクトルに関する活性化された値の或る特定の閾値の範囲内にある場合、認識モジュール２６６が、出力ベクトル２６４と、所望される出力ベクトルとを合致として認識する。例えば、認識モジュール２６６は、出力ベクトル２６４と、所望される出力ベクトル２３９とを合致として認識することが可能である。
【００９３】
方法５００は、指定された記号が、入力ジェスチャーデータから認識されていることを示す動作（動作５０６）を含む。例えば、認識モジュール２６６が、所望される出力ベクトル２３９が、割り当てられた記号２３２にマップされると判定することが可能である。認識モジュールは、割り当てられた記号２３２をグラフィカルサブシステム２６９に送ることが可能である。次に、グラフィカルサブシステムが、入力ジェスチャー２５６が入力された場所の、またはそのような場所の近くの入力領域２２１において、割り当てられた記号を提示することが可能である。
【００９４】
本発明の実施形態は、ニューラルネットワークが認識するように訓練されることが可能な任意の記号を認識することを含む。このため、割り当てられた記号２３２は、訓練されたニューラルネットワーク２３４Ｔが認識するように訓練されている複数の認識可能な記号（マルチストローク記号を含む）の１つであることが可能である。
【００９５】
また、本発明の実施形態は、さらなる次元で入力ジェスチャーに関する接触データを追跡することも可能である。例えば、センサー２０３が、圧力を検出するように構成される場合、圧力に関するＺ軸に沿って（したがって、３つの次元で）接触データが追跡されることが可能である。例えば、高さセンサーなどの他のタイプのセンサーを使用して、テーブル上方の指の動きが追跡されることが可能である。これらの他のセンサーを使用して、高さに関するＺ軸を基準とした指の動きが追跡されることが可能である。
【００９６】
このため、Ｚ軸を基準とした経時的な接触データの次元グラフが、作成されることが可能である。Ｚ軸次元グラフのサンプルは、Ｘ次元およびＹ次元におけるサンプルと一緒にとられることが可能である。Ｚ次元測定値に基づいて、様々なジェスチャーが、認識されることが可能である。例えば、よりしっかりと描かれたジェスチャーと、より軽く描かれた同一のジェスチャーが、異なるジェスチャーとして訓練される、または認識されることが可能である。代替として、マルチタッチ入力ディスプレイ表面２０２上方の異なる動きが、マルチタッチ入力ディスプレイ表面２０２上の接触が、ジェスチャーに関して同一である場合でさえ、異なるジェスチャーを示すことも可能である。
【００９７】
また、本発明の実施形態は、任意の回転で入力された入力ジェスチャーを補償することも可能である。回転を補償するのに、モジュール（例えば、訓練モジュール２３３またはベクトルジェネレーター２５９）が、接触の動き（例えば、図２Ａを参照すると、ポイント２８１からポイント２８２までの）の初期方向を特定する。初期方向は、以下の擬似コード例に従って計算されることが可能である。すなわち、
１．最初は空である、ポイントのセットＳを作成する
２．ジェスチャーＧから、Ｇにおけるポイントを完全に境界付け、Ｇを中心とし、さらに正方形形状（辺が等しい長さ）である境界正方形を作成する。境界正方形は、Ｂ長の辺を有する。
３．ジェスチャーＧからのポイントをＳに、Ａ．ポイントのｘ変位が、Ｂの３３％であるまで、または
Ｂ．ポイントのｙ変位が、Ｂの３３％であるまで
追加することを続ける。
４．Ｓにおけるポイントを通るように線を合わせる（例えば、最小二乗法を使用して）。
【００９８】
「初期方向」線が、計算されると、初期方向線が、左から右に水平に進むように、ジェスチャー全体が回転させられる。この回転は、以下のとおり行われることが可能である。すなわち、
５．左から右に進む水平の線から、初期方向線の角度シータを計算する。シータは、＞＝０度かつ＜３６０度である。
６．標準の回転行列を使用して、すべてのポイントをシータ度だけ回転させる。
【００９９】
正規化された（回転された）入力ジェスチャーデータから、Ｘ対Ｔグラフ、およびＹ対Ｔグラフが、作成され、サンプリングされることが可能である。次に、サンプリングされた値が、ニューラルネットワークに送られることが可能である。回転の補償は、ジェスチャーが、訓練サンプルとして与えられるといつでも、または我々が、ユーザーによって描かれたジェスチャーを認識する際に、実行されることが可能である。「初期方向」を使用して、すべての入力が正規化されることが可能であり、したがって、常に、標準の、単一の向きが、ニューラルネットワークに提示される。マルチストロークのジェスチャーに関して、初期方向は、連結された入力グラフに基づいて、同一の仕方で計算されることが可能である。代替として、マルチストロークのジェスチャーに関して、初期方向は、最初のストロークだけに基づいて計算されることも可能である。
【０１００】
本発明は、本発明の趣旨または基本的な特徴を逸脱することなく、他の特定の形態で実施されてもよい。説明される実施形態は、すべての点で、単に例示的であり、制限するものではないものと解釈されるべきである。したがって、本発明の範囲は、以上の説明によってではなく、添付の特許請求の範囲によって示される。特許請求の範囲の均等性の趣旨および範囲に含まれるすべての変更が、特許請求の範囲に包含されるべきものとする。
【図１】
2010532055.tif 000003
【図２Ａ】
2010532055.tif 000004
【図２Ｂ】
2010532055.tif 000005
【図２Ｃ】
2010532055.tif 000006
【図２Ｄ】
2010532055.tif 000007
【図３】
2010532055.tif 000008
【図４】
2010532055.tif 000009
【図５】
2010532055.tif 000010
【国際調査報告】
2010532055.tif 000011
2010532055.tif 000012