Windows 7 手書き入力の認識性能の向上


Microsoft は、Windows 3.0 用ペン拡張機能から 15 年間以上手書き認識に取り組んできました。Windows Vista の手書きコンポーネントのさらなる統合および広範な可用性により、 Windows PC によって手書きがさらに多くの場面で使用されてきています。私たちは、学校、病院、銀行、保険など向けのさまざまアプリケーションで手書き機能を使用している多くのユーザーを目にします。この自然な対話方式が新しいシナリオで使用されているのを見ると、私たちはわくわくします。もちろん、私たちが引き続き行う必要があるのは、認識の品質を向上させること、および世界のより多くの言語で認識エンジンを使用できるようにすることです。この投稿では、Yvonne (User Interface Platform チームのプログラム マネージャー) が、Windows 7の新しい認識エンジンおよび認識向上のエンジニアリングに関する分析を提供します。 --Steven


私の名前は Yvonne です。私は、Tablet PC and Handwriting Recognition チームのプログラム マネージャーです。これは、私たちがWindows 7 用手書き認識を向上させるために取り組んだ成果についての投稿です。


Microsoft は 1990 年代初期からペン ベースのコンピューティングに投資し続け、Windows Vista のリリースでは、手書き認識エンジンが、米語、英語、ドイツ語、フランス語、スペイン語、イタリア語、オランダ語、ブラジル ポルトガル語、中国語 (繁字体と簡字体)、日本語、および韓国語を含む 12 の言語で使用できます。ユーザーの皆様からは、さらに多くの言語サポートの出荷するのはいつか、また、なぜ特定の言語がまだサポートされないのかと、頻繁にご質問をいただきます。私たちは Windows 7 で、ノルウェー、スウェーデン語、フィンランド語、デンマーク語、ロシア語、およびポーランドなどの新しいより多くの言語認識エンジンを出荷するよう計画しています。このリストは引き続き追加されます。では、新しい手書き認識エンジンを開発するために何が必要か考察していきましょう。


Windows は走り書きの手書きでも認識します。特別な書き方を学ぶ必要はありません。実は、私たちが Windows に何千ものユーザーの手書きスタイルを教えており (私たちの言い方では「トレーニング」)、Windows は、ユーザーがそれを使用するときの手書きスタイルについて実によく学習しています。過去 16 年にわたって、私たちは手書き認識用の強力なエンジンを開発してきました。そして、より正確により速くするためにこれらを調整し、新機能 (Vista のユーザーから学ぶ機能など) を追加し続けています。新しい言語をサポートするということは、新しい辞書を加える以上のことで、新しい言語には大きな投資が必要です。まず、ネイティブの手書きの収集から始まり、次にデータを分析し、トレーニングとチューニングを繰り返し、最後に、このシステムがユーザーに届くと、ユーザーの使用とともに引き続き向上していきます。


データ収集


新しい手書き認識エンジンの開発は、膨大なデータ収集の取り組みから開始します。私たちは、世界中から何万ものライターが書いたテキストの何百万もの単語および文字を収集します。


データ収集の取り組みを説明する前に、私たちが頻繁に尋ねられる質問にお答えしたいと思います。「新しい辞書で既存の認識エンジンを使えないのですか?」 そうできない 1 つの理由は、各言語に特殊文字またはアクセント符号があるということです。しかし、圧倒的理由は、世界の異なる各地域のユーザーは、英国と米国のようなに同じ言語を持つ国々の間でさえ、それぞれ異なる書き方を学んでいるということです。人間にとっては非常に似て見える文字が、コンピューターにとっては実際、全く異なる場合があります。このため、私たちは文字、句読点および他の字形がどのように書かれているか正確にキャプチャする実世界のデータを収集する必要があります。


私たちは確実に「正しいデータ」を収集したいので、データ収集のめのセットアップは困難で時間がかかります。私たちは、認識エンジンを開発するそれぞれの国々でコレクション ラボを慎重に選択します。


ラボでデータ収集を開始する前に、私たちは収集ツールを構成し、ドキュメントを準備し、収集プロセスでボランティアをガイドする言語スクリプトをコンパイルします。私たちのスクリプトは、綴りの正しいデータ、異なる手書きスタイルのデータ、および特定の言語に関連するすべての文字、数字、記号および符号をすべてカバーするデータが確実に収集されるよう、それぞれの言語のネイティブ スピーカーによって慎重に準備されます。スクリプトは、コレクション ラボで使用される前に、すべて校正され編集されます。


ツールとスクリプトが準備できると、私たちはラボを開き、手書きサンプルを寄贈してくださるボランティアの募集を開始します。新人募集では、性別、利き手、年齢、教育などの比率が、その国の大多数を表すようバランスをとります。


ラボのスーパーバイザーはボランティアに、収集ツールに表示されるテキストをボランティア独自の手書きスタイルで書くよう指示します。注意すべき重要なことは、私たちがユーザーの自然な書き方を正確に表す手書きサンプルを収集したいということです。したがって、私たちは、「ペンとペーパー」のように「ペンとタブレット」を扱うよう、ボランティアに促します。ボランティアの 1 人が大きく曲がったストロークで書く傾向を持つならば、収集セッションでその人の正しい大きく曲がったストロークを収集したいと思います。なお、このコンテキストでの高品質データとは、自然に書かれたデータのことです。


これは、収集ツールがどのようなものか示すスナップショットです。


clip_image001


1: 収集ツール


収集セッションは 60 分から 90 分の間で、ボランティアがかなり多くの量の手書きのデータを疲労を感じることなく寄贈できる程度の時間です。その後、寄贈されたデータは、将来の使用に備え、アップロードされて Microsoft のデータベースに格納されます。手書きサンプルには、ストロークの順序、開始点と終点、間隔、新しい認識エンジンをトレーニングするのに不可欠な他の特性など重要な情報が含まれています。


実にさまざまな手書きサンプルがあるのを示すために、データベースのサンプルのいくつかをお見せします。


clip_image002


2: 異なるストロークの順序を示す手書きサンプル。


このスクリーンショットは、3 人の異なるボランティアがどのように「black」という単語を手書きしたか示します。異なる色によって、手書きされた単語内での正確なストロークの順序を示します。最初の 2 人のボランティアは、「black」という単語を書くために 5 つのストロークを要しました。3 番目のボランティアは、4 つのストロークで書いています。さらに、文字「ck」を書くために、3 番目のボランティアは 1 つのストロークを使用し、その一方で、最初のボランティアはこの文字の同じ組み合わせのための 3 つのストロークを使用したことに注意してください。この情報はすべて認識エンジンのトレーニング用に使用されます。


ニューラル ネットワークと言語モデル


いったん十分な量の手書きデータを収集すると、私たちはデータを、開発チームが使用するトレーニング セットと、テスト チームが使用する「ブラインド」セットに分割します。その後、トレーニング セットはニューラル ネットワークをトレーニングするために使用されます。それは、認識プロセスの結果を大きく左右します。自然に書かれたデータは高品質な認識エンジンの開発において不可欠で、認識エンジンはそのトレーニング セットなしでは少しも向上しません。ニューラル ネットワークにより多くの高品質のデータ供給するほど、私たちはさらに複雑な筆記体の手書きを処理できるようになります。


ニューラル ネットワークは、筆記体スクリプトの接続している文字を処理できるTime-Delay Neural Network (TDNN) です。TDNN は手書きの各セグメントの文字、数字、および記号の可能性を計算する場合、先立つストロークと後に続くストロークの各手書きセグメントを考慮します。 TDNN の結果は役立ちますが、まとまりのない手書きの場合は十分ではありません。人間による認識の正確さと同程度になるために、私たちは文字の形を超える情報を使用しなければなりません。私たちはこれを、言語モデルのコンテキストと呼びます。この言語モデルのコンテキストの大部分は、辞書の形式になっています。それは、任意の言語用の有効な綴りの単語リストです。多くの言語の場合、これはスペルチェッカーが使用するのと同じ辞書です。TDNN と辞書は緊密に共同で機能して、任意の入力に対して単語の確率を計算し、最も確率の高い結果を出力します。


ニューラル ネットワークのトレーニングは時間がかかる複雑なプロセスです。認識の正確さの向上という最終目標のために、私たちは他の言語からデータを借用してトレーニング データを増やそうとびたび実験します。他の言語の文字の借用はいつもに成功しません。上記に述べたように、ストロークの順序、文字の形、手書きスタイル、および文字サイズは、国ごとに非常に異なり、 TDNN のパフォーマンスにマイナスの影響をもたらす可能性があります。そのため、認識の正確さを高める「正しい公式」を見つける前に、しばしばトレーニング、再トレーニング、そしてチューニングを何度も繰り返ことになります。


新しい認識エンジンを構築する時、正しい方向に向かっているかどうかどのように知ることができるでしょうか? これは、テスト チームやネイティブ スピーカーが私たちに尋ねる重要な質問です。テスト チームは、認識エンジンの品質を反映する認識の正確さメトリックの生成を担当しています。正確さメトリックは、開発でトレーニングに使用しなかった収集データであるブラインド テスト セットに基づいています。正確さメトリックに加えて、私たちは、フィードバックおよび一層の入力を得るために社内および世界的な子会社のネイティブ スピーカーと協力しています


個人用設定によって認識エンジンを向上させる


前の段落では、私たちがさまざまな異なる手書きスタイルを処理できる高品質な認識エンジンを開発する方法についての概要を説明しました。しかし、各ユーザーが自分のユニークな手書きスタイルについて認識エンジンをトレーニングできればさらに向上します。個人の手書きスタイルについて認識エンジンに教えるためのトレーニングは、Microsoft が出荷前に行うのと同じトレーニングです。唯一の相違点は、特定のユーザー (何千ものユーザーではなく) からユニークなトレーニング データを収集しているということです。私たちはこのプロセスを「個人用設定」を呼びます。


clip_image003


3: 個人用設定ウィザード (センテンス モジュール)


この個人用設定ウィザードのスクリーンショットが示すように、ユーザーは手書きサンプルを提供するために、要求されているセンテンスを書くよう指示されます。ユーザーが個人用設定プロセスでより多くのデータを寄贈するほど、認識エンジンは向上します。指定された文に基づく手書きサンプルの提供に加えて、ユーザーは、トレーニングに使用される特定の認識エラー、字体、および文字を手書きできます。個人用設定機能は複雑で、ユーザーが最適に認識エンジンをチューニングできるようにさまざまな異なるモジュールを提供します。個人用設定がすべてのVista の言語およびすべての新しい Windows 7 の言語で利用できることをお知らせできるのを嬉しく思います。認識の正確さを向上させるこの機能を使用するよう強くお勧めします。


私たちは引き続き認識エンジンを向上させることに取り組みます。これは、オンライン遠隔測定 (匿名、私的、任意、オプトイン) を通してユーザーのフィードバックを取り入れることを意味します。Windows Vista で「手書き認識エラーの報告」という新機能をリリースしました。これにより、ユーザーは認識エンジンが正しく認識しなかった手書きサンプルを提出することができます。ユーザーが Tablet 入力パネル (TIP) で単語を修正した後に、私たちのチームへ誤認識された手書きを修正したものと共に送信できるメニューを提供されます。


次のスクリーンショットは、エラー報告ツールがどのようなものか示します。


clip_image004


4: 「手書き認識エラーの報告」で、ユーザーは誤認識されたインクのサンプルのどれを提出するか選択できます。


私たちは、週当たりおよそ 2000 のエラー報告を受け取ります。エラー報告は、私たちが分析して次世代認識エンジンを向上させるために使用する前に、データベースに格納されます。お察しのように、実世界のデータは、私たちの認識エンジンの欠点を明確にしてくれる唯一のデータですので、非常に役立っています。


私たちはすべてのエラー報告を貴重に思い感謝しています。現在と将来の認識エンジンの機能を向上させるために使用できるよう、どうぞフィードバックを引き続き送信してください。


お読みいただきありがとうございます。


手書き認識担当者を代表して、Yvonne。

Skip to main content